我已经使用Java线程编写了弹跳球的代码。但是当球向下移动时,我无法清除它/刷新它。
import java.awt.*;
class myFrame extends Frame {
public void paint(Graphics g) {
try {
for (int i = 10; i <= 400; i++) {
g.drawOval(100,i+100,50,50);
update(g);
repaint();
Thread.sleep(500);
}
} catch(Exception ex) {
System.out.println(ex);
}
}
}
class BallTest {
public static void main(String cp[]) {
myFrame mf = new myFrame();
mf.setSize(500,500);
mf.setVisible(true);
}
}
答案 0 :(得分:0)
你不应该打电话给update()
。如果你的目的是清除前一个球,那就行了:
import java.awt.*;
class myFrame
extends Frame
{
public void paint(Graphics g)
{
try
{
for(int i=10;i<=400;i++)
{
g.drawOval(100,i+100,50,50);
repaint();
Thread.sleep(500);
Rectangle r = getBounds();
g.clearRect(r.x, r.y, r.width, r.height);
}
}
catch(Exception ex)
{
System.out.println(ex);
}
}
}
class BallTest
{
public static void main(String cp[])
{
myFrame mf = new myFrame();
mf.setSize(500,500);
mf.setVisible(true);
}
}
但是,您应该设置一个调用repaint
的计时器,而不是显式延迟paint()方法。