java - 与 Java Swing 定时器混淆

标签 java swing user-interface timer jframe

<分区>

我真的对 Java Swing 计时器感到困惑。它需要一个 Action 监听器吗?有人可以给我举个例子吗?谢谢!

最佳答案

这是一个使用 javax.swing.Timer 的例子:

enter image description here

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

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;

public class SimpleTimer extends JFrame
{
    private JLabel label;
    private Timer timer;
    private int counter = 10; // the duration
    private int delay = 1000; // every 1 second
    private static final long serialVersionUID = 1L;

    public SimpleTimer()
    {
        super("Simple Timer");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        label = new JLabel("Wait for " + counter + " sec", JLabel.CENTER);
        JPanel contentPane = (JPanel) getContentPane();
        contentPane.add(label, BorderLayout.CENTER);
        contentPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        pack();

        ActionListener action = new ActionListener()
        {   
            @Override
            public void actionPerformed(ActionEvent event)
            {
                if(counter == 0)
                {
                    timer.stop();
                    label.setText("The time is up!");
                }
                else
                {
                    label.setText("Wait for " + counter + " sec");
                    counter--;
                }
            }
        };

        timer = new Timer(delay, action);
        timer.setInitialDelay(0);
        timer.start();

        setVisible(true);
    }

    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            @Override
            public void run()
            {
                new SimpleTimer();
            }
        });
    }
}

关于java - 与 Java Swing 定时器混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13503788/

相关文章:

java - 在 Java 中调用重载函数?

java - java多线程客户端-服务器架构中从run()方法调用方法

java - 将图标设置为 JFrame

java - 将子图像数据存储在数组中

iphone - NavigationController 和 ToolBar 问题

java - 如何编写接收 ADT 并删除重复项的方法?

java - 添加横向 Jpanel

java - 如何在屏幕上查找 JTree 节点的位置

c++ - 如何使用静态库构建 Qt5 应用程序?

Java swing GUI 卡住