2013-04-23 146 views
0

我有一個擴展JPanel的類,它包含一個繪製(圖形頁面)方法來繪製自己..如果我正在構建一個測試驅動程序並希望將其顯示在框架上,應該使用什麼..我的paint(),的paintComponent()的getGraphics()等之間的混淆..繪製一個擴展JPanel的類

的Class

class Car extends JPanel { 

    void draw (Graphics page) { 
     ....draw polygons... 
    } 

* 編輯 *

的目標是動畫汽車移動acr oss的屏幕,我改變了繪製方法'paintComponent()',它出現了!但它需要移動並用計時器重新繪製它。所以我想一遍又一遍地畫它是draw()不是paintComponent()的原因。 ?

+1

閱讀[Swing繪畫教程](http://docs.oracle.com/javase/tutorial/uiswing/painting/index.html) - 它都在那裏。你也可以搜索這個網站的例子,因爲它充滿了他們,有些是我寫的。如果你仍然陷入困境,請回到一個特定的可回答的問題。 – 2013-04-23 02:42:58

+1

從[執行自定義圖形](http://docs.oracle.com/javase/tutorial/uiswing/painting/)開始,然後查看[2D圖形](http://docs.oracle.com/javase/tutorial/2d /),因爲您顯然不會感到困惑,請查看[AWT和Swing繪圖](http://www.oracle.com/technetwork/java/painting-140037.html) – MadProgrammer 2013-04-23 02:45:37

+0

您應該重寫'paintComponent',但是你不應該手動調用它! – MadProgrammer 2013-04-23 02:46:07

回答

2
  • paint()

    AWT容器(使用Swing)&搖擺頂層容器,如JFrame & JApplet(不要在頂層容器不畫 - 添加JPanelJComponent)。所以基本上,不要在這個年齡改變方法。

  • paintComponent()

    絕大多數Swing組件。

  • getGraphics()

    BufferedImage(可能被在JLabel顯示)。這將提供一個Graphics實例,但我更喜歡使用createGraphics()作爲Graphics2D實例(渲染提示非常好)。