java - 如何以一秒为间隔显示 Swing 计时器的剩余时间?

标签 java swing timer actionlistener countdown

我一直在使用 Java Applet 开发一个简单的游戏,玩家的目标是在 30 秒的时间内获得尽可能多的分数。现在,我正在使用 Swing 计时器从 30 秒开始倒计时,一旦达到 0 标记,就会显示“游戏结束”屏幕以及玩家的得分。我有这些实例变量:

ActionListener listener = new ActionListener() {
     @Override
     public void actionPerformed(ActionEvent e) {
        screenState = 0;
        repaint();
    }
};

Timer displayTimer = new Timer(30000, listener);

当玩家点击“播放”按钮时,我执行displayTimer.start();

然后,我在我的绘画课的适当案例中有这个:

g.drawString("Time Remaining: " + displayTimer.getDelay()/1000, 650, 100);

很明显,现在它只是显示一个静态的“剩余时间:30”,并且屏幕会在 30 秒后切换。我想弄清楚的是如何每隔一秒重新绘制这个值,以便它成为一个实时计时器。到目前为止,我能找到的唯一帮助是人们使用组件。

最佳答案

ActionListener listener = new ActionListener() {

     int count = 0;

     @Override
     public void actionPerformed(ActionEvent e) {
        if (count++==30) {
            screenState = 0;
        }
        repaint();
    }
};

Timer displayTimer = new Timer(1000, listener); // make it 30 times faster

关于java - 如何以一秒为间隔显示 Swing 计时器的剩余时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24237030/

相关文章:

java - 仅在用户输入给出"is"后才结束循环 - Java

java - ActionEvent不会出现

java - iText 5 编辑时出错 : "The color depth 1 is not supported." exception when apply redaction on pdf which contain image also

java - libgdx Bullet 3D 和滚动摩擦导致 NaN

java - JPanel 不显示所有定制组件

java - 如何在两个不同的窗口中识别全局变量(Java Swing GUI)

java - 如何使用 JPanel 设置按钮大小

c - 在 C 工作线程中实现计时器的方法

c# - .NET 应用程序中的计时器

java - 如何生成 1 次鼠标 + 1 次键盘点击?