public final static int ONE_SECOND = 1000;
...
timer = new Timer(ONE_SECOND, new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
//...Perform a task...
    }    
});//start the timer: 
timer.start();When the task is finished, the timer's action listener stops the timer: 
if (/* task is done */) {
    ...
    timer.stop();
    ...
}

解决方案 »

  1.   

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;class ballFrame extends JFrame implements ActionListener
    {
    private Timer timers;
    private int dx,dy,x,y;
    private int add;
    private int startx,starty;
    private JButton jb;
    private Color c;
    private int xchose,ychose;
    private int upline;
    private boolean flag;
    public ballFrame()
    {
    Container ctp=getContentPane();
    ctp.setLayout(null);
    dx=10;
    dy=20;
    startx=60;
    starty=50;
    x=5;
    y=7;
    flag=true;
    setBackground(Color.black);
    c=getBackground();
    jb=new JButton ("Start");
    ctp.add(jb);
    jb.setBounds(20,350,70,20);
    jb.addActionListener(this);
    timers=new Timer(80,this);
    //g.dispose();
    addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    });
    setSize(700,400);
    setResizable(false);
    setTitle("ball");
    setVisible(true);
    }
    public void paint(Graphics g)
    { //super.paint(g);
    g.setColor(Color.red);
    g.fillOval(dx,dy,10,10);
    //this.setBackground(Color.black);
    g.setColor(Color.green);
    for (int i=0 ;i<=9;i++)
    {
    g.drawLine((startx*(i+1)),(starty+(i*30)),(startx*(i+1)),(starty+(i+1)*30));
    g.drawLine((startx*i),(starty+(i*30)),(startx*(i+1)),(starty+i*30));
    }
    g.drawLine(600,350,700,350);
    //g.dispose();
    }
    public void move()
    {

    //add=5;
    Graphics g=getGraphics();
    g.setColor(c);
    g.fillOval(dx,dy,10,10);
    g.setColor(Color.red);
    dx=dx+x;
    dy=dy+y;
    g.fillOval(dx,dy,10,10);
    g.dispose();
    for (int i=0 ;i<=9;i++)
    if ( dx>=i*60 & (dx<60*(i+1))) xchose=i+1;
    for (int i=0;i<=9;i++)
    if (dy>(((i*30)+50)-15))       ychose=i+1;
    /*for (int i=0; i<=9;i++)
    if (dy<((i*10)+30)) upline=1;
        else    upline=0;*/
    if (dy<30) upline=1;
    else upline=0;    
       
    switch (xchose)
    {
    case 1:if (ychose==1) y=-5;
    else 
             if( upline==1)  
    y=5;
    break;
    case 2:if (ychose==2) y=-5;
    else 
    if (upline==1)
    y=5;
    break; 
    case 3: if (ychose==3) y=-5;
    else
    if (upline==1)
    y=5;
    break;
    case 4: if (ychose==4) y=-5;
    else
    if (upline==1)
    y=5;
    break ;
    case 5:if (ychose==5) y=-5;
    else
    if (upline==1)
    y=5;
    break ;
    case 6:if (ychose==6) y=-5;
    else
    if (upline==1)
    y=5;
    break ;
    case 7:if (ychose==7) y=-5;
    else
    if (upline==1)
    y=5;
    break ;
    case 8:if (ychose==8) y=-5;
    else
    if (upline==1)
    y=5;
    break ;
    case 9:if (ychose==9) y=-5;
    else
    if (upline==1)
    y=5;
    break ;
    case 10:if (ychose==10) y=-5;
    else
    if (upline==1)
    y=5;
    break ;
    default:break ;
    }

    }
    public void actionPerformed(ActionEvent evt )
    {
    Object source=evt.getSource();
    if (source==jb) 

    if (jb.getText()=="Start")
    {
    jb.setText("Stop");
    timers.start();
    }
    else
       { 
        jb.setText("Start");
        timers.stop();
       }
    }else
    move();
    }
    }
    class ball
    {
    public  static void main (String args[])
    {
    JFrame test=new ballFrame();
    test.setVisible(true);
    //test.repaint();
    }
    }
      

  2.   

    jimw() 
    要包含什么头文件呀