下面这个程序运行起来,为什么每隔5秒会执行一次publicvoidrun()中的其它行代码,但就是不会执行publicvoidrun()中的g.drawOval(x,y,20,20)这一行代码?importjavax.swing.*;importja...
下面这个程序运行起来,为什么每隔5秒会执行一次public void run()中的其它行代码,但就是不会执行public void run()中的g.drawOval(x,y,20,20) 这一行代码?
import javax.swing.*;
import java.awt.*;
import java.util.*;
public class Test0804 extends JFrame{
public Test0804(){
TestPanel tp=new TestPanel();
add(tp);
}
public static void main(String[] args) {
Test0804 e=new Test0804();
e.setTitle("*** Test0804 ***");
e.setSize(300,300);
e.setLocationRelativeTo(null);
e.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
e.setVisible(true);
}
}
class TestPanel extends JPanel{
int x=0;
int y=0;
java.util.Timer timer=new java.util.Timer();
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawString("delay test",x,y);
x+=20;
y+=20;
timer.schedule(new TimerTask(){
public void run(){
g.drawOval(x,y,20,20);
x+=20;
y+=20;
System.out.println(x+" , "+y);
if(x>=100)
timer.cancel();
}
},5000,3000);
}
}
上面有个笔误,是每隔3秒绘制一个圆,不是5秒。
展开