2013-03-11 59 views
0

我想知道你能不能幫我解決我的程序結構問題。我正在和Java進行一場比賽,我有兩節課。 1類是使用繪製方法擴展JFrame的圖形類:如何使用Swing在Java中構建我的圖形結構?

圖形類 paint()並調用使用JFrame作爲參數的各種對象。 類內部是實現MouseListener和Mouse Motion Listener的子類,它與paint方法交互。

畫布類 我打算把第一類嵌入到一個更大的畫布類中,該畫布類會有按鈕,面板等等,因此基本上把這個類用作較大程序中的較小(子程序)。 這是可能的/我是這樣做的正確方法。每當我嘗試調用畫布類中的圖形類時,圖形都不會出現。

public Canvas(){ 
    graphic = new Graphic(name); 

} 
/** 
* @param args 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Canvas canvas = new Canvas(); 
      canvas.setDefaultCloseOperation(EXIT_ON_CLOSE); 
      canvas.setSize(1500, 1500); 
    canvas.setVisible(true); 
} 

} 任何幫助/指導,將不勝感激。我只是想主要知道我是否正確地思考圖形編程。

+0

[例如](http://docs.oracle.com/javase/tutorial/2d/index.html),[和這裏](http://docs.oracle.com/javase/tutorial/uiswing/ painting/index.html),[and here](http://www.java2s.com/Tutorial/Java/0261__2D-Graphics/Catalog0261__2D-Graphics.htm) – mKorbel 2013-03-11 06:36:16

回答

1

Canvas不是「窗口」。爲了在屏幕上顯示任何內容,必須將組件添加到窗口委託。

我個人會避免重寫頂級容器的paint方法。這樣做的主要原因是頂級容器不是雙緩衝的,它使您的應用程序的可移植性降低。向其他組件添加組件要容易得多,一個框架是最終的。

我也會在畫布上使用JPanel,只是因爲JPanel是雙緩衝。

+0

gotcha。非常感謝您的幫助。 – and0rsk 2013-03-11 07:34:53