2011-06-06 118 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