- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在JavaFX中开发一款国际象棋游戏,我认为它效果很好,但现在我正在尝试为两个玩家添加倒计时。我尝试阅读文档/观看 youtube 视频/在 StackOverflow 上搜索,我终于成功了,我可以每秒在控制台上打印计时器。问题是我有另一个类中的代码,我希望不要在控制台上打印,而是显示在我的 GUI 应用程序 上(使用 Text 变量),所以我不知道如何才能将倒计时发送到我的主类(我使用了 run()
方法,所以我认为这是不可能的),然后将其添加到我的 Pane 、场景等中。或者也许有一种方法可以将其直接添加到场景或 Pane 中, 我不知道。这是我的倒计时代码:
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--;
}
}
}
}
如果代码很困惑或类似的东西,请不要评判我,我是一个十足的初学者。
谢谢大家
最佳答案
来自Concurrency in JavaFX Oracle 教程:
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 .
关于java - 如何为我的国际象棋游戏添加倒计时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62229377/
我是一名优秀的程序员,十分优秀!