Timer对象每隔0.5秒发一个事件给直线,通知它改变颜色属性,这一具体过程是怎样的?

解决方案 »

  1.   

    我原来的程序是:
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    //MyWindowListener;//
    public class eleven1 extends JFrame
    {
    public eleven1()
    {
    super("ready");
    setSize(500,80);
    show();
    }
    public void paint(Graphics g)
    {
    Font font=new Font("Serif",Font.BOLD,20);
    g.setFont(font);
    g.drawString("按顺序变换水平线为红绿蓝色",60,60);
    g.drawLine(60,70,400,70);
    }
    public static void main(String args[])
    {
    eleven1 app=new eleven1();
    app.addWindowListener(new MyWindowListener());
    }
    }
    现在我想让那一条直线按红黄绿的顺序变换,该怎么办?
      

  2.   

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    //MyWindowListener;//public class Eleven1 extends JFrame implements ActionListener
    {
      private Timer t;
      private int color=0;
      private Color[] colors={Color.red,Color.green,Color.blue};
      
      public Eleven1()
      {
        super("ready");
        t=new Timer(500,this);
        t.start();
        setSize(500,80);
        addWindowListener(new WindowAdapter()
          {
            public void windowClosing(WindowEvent e)
            {
              t.stop();
              System.exit(0);
            }
          });
        show();
      }
      public void actionPerformed(ActionEvent e)
      {
        color++;
        if (color>2) color=0;
        Graphics g=getGraphics();
        g.setColor(colors[color]);
        g.drawLine(60,70,400,70);
        g.dispose();
      }
      public void paint(Graphics g)
      {
        Font font=new Font("Serif",Font.BOLD,20);
        g.setFont(font);
        g.drawString("按顺序变换水平线为红绿蓝色",60,60);
        g.setColor(colors[0]);
        g.drawLine(60,70,400,70);
      }
      public static void main(String args[])
      {
        Eleven1 app=new Eleven1();
      }
    }