【问题标题】:How can I add a countdown for my chess game? [duplicate]如何为我的国际象棋游戏添加倒计时? [复制]
【发布时间】:2020-06-06 08:46:42
【问题描述】:

我一直在 JavaFX 中开发一个国际象棋游戏,我认为它效果很好,但现在我想为两个玩家添加一个倒计时。我试图阅读文档/观看 youtube 视频/在 StackOverflow 上搜索,我终于设法做到了,我可以在控制台上每秒打印一次计时器。 问题是我在另一个类中有代码,我希望而不是在控制台上打印,而是出现在我的 GUI Application 上(使用 Text 变量),所以我不知道我该怎么做将倒计时发送到我的主类(我使用了run() 方法,所以我认为这是不可能的),然后将其添加到我的窗格、场景等中。或者可能有一种方法可以直接将其添加到场景或窗格中, 我不知道。 这是我的倒计时代码:

package com.mycompany.chess;

import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.scene.text.Text;
import org.w3c.dom.css.Counter;


public class MyThread extends Thread {
    static int min = 10;
    static int sec = 0;
    Text counter = new Text();


    public void run(){
       while(min>-1){
           if(sec == 0){
                min--;
                sec = 59;
            }
            if(sec<10){
                String seconds = String.valueOf(sec);
                String minutes = String.valueOf(min);
                counter.setText(minutes + ":0" + seconds);
                System.out.println(minutes + ":0" + seconds);
                try {
                    Thread.sleep(1000L);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Counter.class.getName()).log(Level.SEVERE, null, ex);
                }
                sec--;
            }else{
                String seconds = String.valueOf(sec);
                String minutes = String.valueOf(min);
                counter.setText(minutes + ":" + seconds);
                System.out.println(minutes + ":" + seconds);

                try {
                    Thread.sleep(1000L);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Counter.class.getName()).log(Level.SEVERE, null, ex);
                }
                sec--;
            }
        }
    }

    }

代码乱码之类的请不要评判我,我是个十足的初学者。

谢谢大家

【问题讨论】:

    标签: java class javafx timer countdown


    【解决方案1】:

    来自Concurrency in JavaFX Oracle 教程:

    JavaFX 场景图,代表图形用户界面 JavaFX 应用程序不是线程安全的,只能被访问 并从 UI 线程(也称为 JavaFX 应用程序)修改 线程。

    据此,您不应从 JavaFX 应用程序线程以外的线程修改JavaFX 组件。 而是使用 JavaFX 工具,如链接教程中所述,并在许多易于查找的示例中进行了演示,例如 this one

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多