2012-04-30 17 views
2

楕円や四角形を画面に表示する場合は、キャンバスやJPanelを使用する必要がありますか?Canvas vs. Panel

違いは何ですか?それぞれはいつ使うのですか?

+0

スイングコンポーネントを使用します。 – user1329572

+0

AWTではなくSwingを使用する理由は、[この回答](http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978)を参照してください。 –

答えて

2

通常、Swingを使用している場合は、Swingコンポーネントのみを使用してください。 SwingコンポーネントとAWTコンポーネントを同じGUIに混在させると、奇妙な結果につながります。だから私は、JPanel、または生のJComponentを使用します。

4

CanvasはAWTオブジェクトです。 JPanelは軽量のJava Swingオブジェクトです。 Java Swing GUIをお持ちの場合は、JPanelを使用することを強くお勧めします。

ここJPanelの良いリンクです:

最も単純なケースでは、あなたがJPanelまったく同じ方法を使用します でしょうPanelとして。それを割り当て、コンポーネントをドロップして、にJPanel を追加します。しかし、JPanelも...

1

それとも、アイコンのような静的な画像を表示したい場合は、JLabelを使用することができます(ないJCanvasはありません) Canvasの代替として機能します。

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'インスタンスの' dispose() 'を忘れないでください。 –

0

このようなものは好みのものに依存しますが、私はJFrameを使用して直接ウィンドウを作成し、それを描画できます。キャンバスには利点があります。それは、インポートを少なくして書いてみましょう。また、キャンバスグラフィックスのものからウィンドウのものを分離しますが、ウィンドウにアクセスできないという欠点があります。それはあなたが好きで必要なものによって決まります。