2011-06-06 150 views
4

我想製作一個簡單的球動畫,從1個角落開始,並轉到面板的另一個角落。我爲此寫了一個程序。橢圓形的線索

當我運行程序oval離開蹤跡。我的意思是說,當程序運行時,它留下了「顏色痕跡」。在我的程序中,timer每100毫秒觸發一次事件。

以下是負責運行代碼的邏輯:

void function() { 
    // in this there is a action listener timed accordingly to fire event of 
    // doing x++ every 100th miliseconds 
} 

public void paintComponent(final Graphics g) { 
g.setColor(Color.black); 
g.drawOval(x,y,width,height); 
g.fillOval(x,y,width,height); 
} 

輸出的屏幕截圖:

+0

W¯¯對'Graphics'對象的'final'聲明? – 2011-06-06 14:22:26

+0

@ Andrew Thompson在匿名類中聲明'painComponent()' – saplingPro 2011-06-06 14:27:43

+0

@ Andrew Thompson參考@ Bala R的回答'super.paintComponent(g)做了什麼?它有什麼作用? – saplingPro 2011-06-06 14:29:30

回答

6

嘗試

public void paintComponent(final Graphics g) { 
super.paintComponent(g); 

g.setColor(Color.black); 
g.drawOval(x,y,width,height); 
g.fillOval(x,y,width,height); 
} 
+0

@ Bala R yes that works.But'super.paintComponent(g)'的作用是什麼? – saplingPro 2011-06-06 14:15:05

+0

@Meprogrammer調用超類的'paintComponent()'作爲清除畫布。 – 2011-06-06 14:28:54

+0

@ Bala R每次塗漆後清除畫布?那好吧 – saplingPro 2011-06-06 14:34:56