简体   繁体   English

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

[英]Java Swing Timer; Create a loop; count to 4 Twice

With the code below, the timer counts 4 seconds, and if it reaches 1, 'Hello World!' 使用下面的代码,计时器计数4秒,如果达到1,则“Hello World!” Get's printed. 打印出来。
How can i make it so that the, timer counts to 4 TWICE and print Hello World only at the first count 1. 我怎样才能使计时器计数到4 TWICE并仅在第一次计数1时打印Hello World。

How do i do this? 我该怎么做呢?

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

}

Just have an Aletrnativecounter, as i had did in the following 只有一个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);
    }

    }

This is demo program for what you want: 这是您想要的演示程序:

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

That is the code you need to place into your ClockListener. 这是您需要放入ClockListener的代码。

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

Good luck, Boro. 祝你好运,博罗。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM