java - 如何动态更改警报文本?

标签 java javafx text cycle

我正在尝试在 JavaFX 中创建一个简单的加载窗口,并且为此使用信息警报。 这是我的代码:

public Alert alert = new Alert(Alert.AlertType.INFORMATION);

public void drawData(javafx.event.ActionEvent actionEvent) {
    alert.setHeaderText(null);
    alert.setTitle("Loading...");
    alert.show();
    for (int i = 0; i < * something * ; i++) {
        /* some code here */
        System.out.println(i);
        alert.setContentText(Integer.toString(i));
    }
    alert.close();
}
}

但这似乎不起作用。我得到的只是空的警报窗口: enter image description here

真的有办法解决这个问题吗? 另外,如何忽略警报的“确定”按钮?

最佳答案

问题是您在用户界面线程上完成工作:

for (int i =0; i < *something*; i++){
        *some code here*
        System.out.println(i);
        alert.setContentText(Integer.toString(i));
}

这会阻止用户界面和任何更新。在 JavaFX 中,更新是在用户界面调度程序的每个“刻度”上完成的。如果您更新用​​户界面项的属性,则在 UI 线程获得下一个刻度之前它们不会得到处理。

要完成工作,您需要将其移至用户界面线程之外,并使用一种机制 update it 。查看JavaFX concurrency有关 Worker 和其他并发类的更多信息,这将为您解决一些麻烦。

关于java - 如何动态更改警报文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49551946/

相关文章:

java - 当我的变量是 int 类型时,有没有办法检查 .chars 是否为空?

java - 如何以编程方式在 JavaFX ComboBox 中设置字符串值

java - 如何在 JavaFx 中检测 tableview 项目计数调整大小?

r - 在R中导入多个文本文件,并从预定列表中为其分配名称

java - 如何避免使用 textWatcher 更改 editText?

java - 我必须在 server.xml 中编辑什么?

java - 如何将 webapp_config.txt 包含到 Play 的 dist zip 中?

c - 用 C 将文本文件读入数组

java - AES/CBC/PKCS5Padding 在 java 中加密在 ruby​​ 中解密

java - 如何使用java复制mysql中的模式