2012-04-30 42 views
2

如果我想在屏幕上显示椭圆和矩形,我应该使用canvas还是JPanel?Canvas vs. Panel

有什么区别?我什么时候使用每个?

+0

使用Swing组件。 – user1329572

+0

另请参见[这个答案](http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978)的许多原因使用Swing而不是AWT。 –

回答

2

通常,如果您使用的是Swing,则只能使用Swing组件。在同一个GUI中混合Swing和AWT组件会导致奇怪的结果。所以我会使用JPanel或者一个原始的JComponent。

4

Canvas是一个AWT对象; JPanel是一个轻量级的Java Swing对象。如果您有Java Swing GUI,我强烈建议使用JPanel

这里有JPanel一个很好的链接:

在最简单的情况下,您可以使用JPanel完全相同的方式,你会 一个Panel。分配它,将组件放入其中,然后将JPanel 添加到某些Container。然而,JPanel还充当 Canvas更换(没有JCanvas)...

1

或者你可以使用一个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)); 
+0

不要忘记'处理(')你明确创建的任何'Graphics'实例。 –

0

这种取决于你喜欢什么,但是,我会使用JFrame,它会直接创建一个窗口,并且你可以绘制它。画布有它的优点,它可以让你编写一个更少的导入,它也将窗口的东西与画布图形的东西分开,但它有它没有访问窗口的缺点。这取决于你喜欢和需要什么。