2011-04-11 81 views
1

用下面的代码,计时器计数4秒,如果达到1, 'Hello World!'打印出来。
我怎样才能让这个只在第一次计数1Java Swing Timer;创建一个循环;计数到4两次

我如何做到这一点的,定时器计数到4次,打印 的Hello World?

import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 
    import java.util.Calendar; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; 
    import javax.swing.JButton; 
    import javax.swing.JFrame; 
    import javax.swing.JLabel; 
    import javax.swing.JOptionPane; 
    import javax.swing.JPanel; 
    import javax.swing.JTextField; 
    import java.awt.Color; 
    import java.awt.Toolkit; 


class clockExample1 extends JFrame { 


    private JTextField _textfield1; 

    public clockExample1() { 

     _textfield1 = new JTextField(5); 
     _textfield1.setEditable(false); 
     JPanel panel1 = new JPanel(); 
     panel1.setLayout(new FlowLayout()); 
     panel1.add(_textfield1); 
     JButton button1 = new JButton("click here"); 


     this.setContentPane(panel1); 
     this.setTitle("Text Clock 1"); 
     this.pack(); 
     this.setLocationRelativeTo(null); 
     this.setResizable(true); 
     panel1.add(button1); 




     ClockListener cl = new ClockListener(); 
     Timer t = new Timer(1000, cl); 
     t.start(); 


      } 



class ClockListener implements ActionListener { 

    int count = 0; 

    public void actionPerformed(ActionEvent e) { 

     int fakeSecond = (count++ % 4) + 1; 
     if (fakeSecond == 1) { System.out.println("Hello, World!"); 

} 
     Calendar now = Calendar.getInstance(); 
     int h = now.get(Calendar.HOUR_OF_DAY); 
     int m = now.get(Calendar.MINUTE); 
     int s = now.get(Calendar.SECOND); 
     _textfield1.setText("" + fakeSecond + ""); 


    } 


} 




    public static void main(String[] args) { 
     JFrame clock = new clockExample1(); 
     clock.setVisible(true); 
    } 

} 
+0

并没有忘记标记这个功课;-) – kleopatra 2011-04-11 09:08:18

+0

你是什么意思很简单?哈哈我是初学者! – Opoe 2011-04-11 09:17:02

+0

计时器是你自己的对象吗?我不认为java.util.Timer有一个叫做start的方法吗? – Koekiebox 2011-04-11 09:21:49

回答

2

只要有一个Aletrnativecounter,因为我在下面

import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 
    import java.util.Calendar; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; 
    import javax.swing.JButton; 
    import javax.swing.JFrame; 
    import javax.swing.JLabel; 
    import javax.swing.JOptionPane; 
    import javax.swing.JPanel; 
    import javax.swing.JTextField; 
    import java.awt.Color; 
    import java.awt.Toolkit; 


    class clockExample1 extends JFrame { 


    private JTextField _textfield1; 

    public clockExample1() { 
     System.out.println("Flow Here"+"2"); 
     _textfield1 = new JTextField(5); 
     _textfield1.setEditable(false); 
     JPanel panel1 = new JPanel(); 
     panel1.setLayout(new FlowLayout()); 
     panel1.add(_textfield1); 
     JButton button1 = new JButton("click here"); 


     this.setContentPane(panel1); 
     this.setTitle("Text Clock 1"); 
     this.pack(); 
     this.setLocationRelativeTo(null); 
     this.setResizable(true); 
     panel1.add(button1); 



     System.out.println("Flow Here"+"3"); 
     ClockListener cl = new ClockListener(); 
     Timer t = new Timer(1000, cl); 
     t.start(); 


      } 



    class ClockListener implements ActionListener { 

    int count = 0, alternativecounter=0; 

    public void actionPerformed(ActionEvent e) { 
     System.out.println("Flow Here"+"4"); 
     int fakeSecond = (count++ % 4) + 1; 


     if (fakeSecond == 1) { 
      alternativecounter+=1; 
      System.out.println("alternativecounter"+alternativecounter); 
      if(alternativecounter==2) 
      { 

       alternativecounter=0; 
       System.out.println("alternativecounter"+alternativecounter); 
       JOptionPane.showMessageDialog(null,"Warm Welcome to you, My dear friend"); 
      } 

    } 
     System.out.println("Flow Here"+"5"); 
     Calendar now = Calendar.getInstance(); 
     int h = now.get(Calendar.HOUR_OF_DAY); 
     int m = now.get(Calendar.MINUTE); 
     int s = now.get(Calendar.SECOND); 
     _textfield1.setText("" + fakeSecond + ""); 


    } 


    } 




    public static void main(String[] args) { 
     System.out.println("Flow Here"+"1"); 
     JFrame clock = new clockExample1(); 
     clock.setVisible(true); 
    } 

    } 
+0

非常感谢Sankar,这是我的意思! – Opoe 2011-04-12 11:37:43

1

这是演示程序,你想要的东西:

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.Timer; 

public class TestCls { 
    static int i=1; 
    static Timer timer; 
    static boolean flag = false; 

    public static void main(String[] args) throws InterruptedException { 
     timer = new Timer(100, new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
       if (i == 4){ 
        if(!flag){ 
         System.out.println("Print me on 4."); 
         i=0; 
         flag = true; 
        } else { 
         timer.stop(); 
        } 
       } 
       i = i + 1; 
      } 
     }); 
     timer.start(); 
     Thread.sleep(1000); 
    } 
} 
1

这就是你需要放入您的ClockListener代码。

//in timer 
if(counter == 1) 
    System.out.println("Hello, World!"); 
else if(counter == 8) 
    t.stop(); 

祝你好运,博罗。