如果我想在屏幕上显示椭圆和矩形,我应该使用画布还是 JPanel?
有什么不同?我什么时候使用每个?
Canvas
是一个 AWT 对象;JPanel
是一个轻量级的 Java Swing 对象。如果您有 Java Swing GUI,我强烈建议您使用JPanel
.
这是JPanel上的一个很好的链接:
在最简单的情况下,您使用 a的方式与使用 a
JPanel
的方式完全相同Panel
。分配它,将组件放入其中,然后将其添加JPanel
到一些Container
. 但是,JPanel
也可以替代Canvas
(没有JCanvas
)...
一般来说,如果你使用 Swing,你应该只使用 Swing 组件。在同一个 GUI 中混合 Swing 和 AWT 组件会导致奇怪的结果。所以我会使用 JPanel 或原始 JComponent。
JLabel
或者如果你想显示像图标这样的静态图像,你可以使用。
BufferedImage image=
new BufferedImage(100, 50, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = image.createGraphics();
// draw
g2.draw(new Ellipse2D.Double(x, y, rectwidth,rectheight));
g2.fill (new Ellipse2D.Double(0, 0, 100, 50));
JLabel label = new JLabel(new ImageIcon( image ));
这取决于你喜欢什么,但是,我会使用 JFrame,它直接创建一个窗口,你可以在上面绘图。Canvas 有它的优点,它可以让你少写一个 import,它还可以将 window 的东西与 canvas 的图形的东西分开,但它也有它的缺点,那就是无法访问 window。这取决于你喜欢什么和需要什么。