Java Swing Timer;创建一个循环;数到4两次

时间:2011-04-11 09:04:08

标签: java swing loops timer count

使用下面的代码,计时器计数4秒,如果达到1, '你好,世界!'打印出来。
我怎样才能使计时器计数到4 TWICE并打印 Hello World仅在第一次计数1时。

我该怎么做?

    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);
    }

}

3 个答案:

答案 0 :(得分: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);
    }

    }

答案 1 :(得分: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);
    }
}

答案 2 :(得分:1)

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

//in timer
if(counter == 1)
   System.out.println( "Hello, World!" );
else if(counter == 8)
   t.stop();
祝你好运,博罗。