使用无限循环时 javaFX UI 崩溃

标签 java loops javafx crash

我正在尝试在 javafx 中构建时钟,但当我尝试使用无限循环时 GUI 崩溃。

    while (true) {
            Date time = new Date();
            
             // mins and hour are labels
            
            if (time.getMinutes() < 10) {
                mins.setText("0" + Integer.toString(time.getMinutes()));    
            } else {
                mins.setText(Integer.toString(time.getMinutes()));
            }
            
            if (time.getHours() < 10) {
                hour.setText(0 + Integer.toString(time.getHours()));    
            } else {
                hour.setText(Integer.toString(time.getHours()));
            }
            
        }

我听说我可以使用称为线程的东西,但我不太明白如何正确实现它。

最佳答案

看起来您正在 UI 线程中使用无限循环。您应该在后台线程中跟踪时间,但在 UI 线程中更新 UI。

要在后台线程中运行,请使用:

new Thread(new Runnable(){
    public void run(){
        //your code here.
    }
}).start();

要在 UI 线程中运行,请使用:

Platform.runLater(new Runnable(){
    public void run(){
        //your code here.
    }
});

关于使用无限循环时 javaFX UI 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46454198/

相关文章:

java - 从 FXML 访问 jar 中嵌入的资源

java - 部署在 ActiveMQ 内部时的 Camel log4j 配置

java - 使用 printf 和 format 进行格式化

Java - 创建多个 HashMap 并使用 for 循环填充它们 - 有更好的方法吗?

JavaFX 外部目录和 jar 文件之外的资源

JavaFX - 加载下一个场景时保留工具栏

java - 当我将字符串与 == 而不是 .equals() 进行比较时,如何告诉 Eclipse 警告我

java - PHP getdate() 转换为 Java 日期

java - 用循环返回两个整数?

java - boolean 值始终输出 true