有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何为我的国际象棋游戏添加倒计时?

我一直在用JavaFX制作一个国际象棋游戏,我认为效果很好,但现在我正在尝试为两位玩家添加一个倒计时。我试着阅读文档/观看youtube视频/在StackOverflow上搜索,最终我成功了,我可以在控制台上每秒打印一次计时器。 问题是,我的代码在另一个类中,我不想在控制台上打印,而是出现在我的GUI应用程序上(使用文本变量),因此我不知道如何将倒计时发送到我的主类(我使用了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--;
            }
        }
    }

    }

请不要评判我,如果代码是凌乱的或类似的东西,我是一个彻头彻尾的乞丐

谢谢大家


共 (1) 个答案

  1. # 1 楼答案

    来自Oracle的Concurrency in JavaFX教程:

    The JavaFX scene graph, which represents the graphical user interface of a JavaFX application is not thread-safe and can only be accessed and modified from the UI thread also known as the JavaFX Application thread.

    根据它,您不应该从JavaFX应用程序线程以外的线程修改JavaFX组件。 相反,使用JavaFX工具来实现它,正如链接教程中所解释的,并在许多易于找到的示例中演示,例如this one