【问题标题】:How can I make a countdown in my applet?如何在我的小程序中进行倒计时?
【发布时间】:2013-12-03 14:45:35
【问题描述】:

我正在编写游戏,需要 60 秒倒计时。当我单击“开始”按钮时,我希望它开始倒计时。我现在可以手动让它倒计时,但需要它自动倒计时。

这是一个 Java 小程序,而不是 Javascript。

在我使用其他按钮时,有没有办法让这个计时器在后台运行?我正在使用 JLabels 和 JButton。我可以同时运行两个 ActionListener 吗?

【问题讨论】:

  • 使用java.util.timerjava.swing.timer

标签: java applet jbutton jlabel countdown


【解决方案1】:

使用javax.swing.Timer

运行这个例子。您将看到在时间运行时您仍然可以执行其他操作。点击是或否按钮,而时间正在流逝

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;

public class Test extends JApplet {

    private JLabel label1 = new JLabel("60");
    private JLabel label2 = new JLabel("Yes");
    private JButton jbt1 = new JButton("Yes");
    private JButton jbt2 = new JButton("No");
    private int count = 60;
    private Timer timer;

    public Test() {
        JPanel panel1 = new JPanel(new GridLayout(1, 2));
        panel1.add(label1);
        panel1.add(label2);
        label1.setHorizontalAlignment(JLabel.CENTER);
        label2.setHorizontalAlignment(JLabel.CENTER);
        JPanel panel2 = new JPanel();
        panel2.add(jbt1);
        panel2.add(jbt2);

        add(panel1, BorderLayout.CENTER);
        add(panel2, BorderLayout.SOUTH);

        timer = new Timer(1000, new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                count--;
                if (count == 0) timer.stop();

                label1.setText(String.valueOf(count));

            }
        });
        timer.start();

        jbt1.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                label2.setText("Yes");
            }
        });
        jbt2.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                label2.setText("No");
            }
        });
    }
}

【讨论】:

  • 非常感谢!我实现了这个,它工作得很好!!! StackOverflow 太棒了……
猜你喜欢
  • 1970-01-01
  • 2023-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-05
相关资源
最近更新 更多