【问题标题】:How do I dynamically change alert text?如何动态更改警报文本?
【发布时间】:2018-03-29 09:03:10
【问题描述】:

我正在尝试在 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();
}
}

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

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

【问题讨论】:

标签: java javafx text cycle


【解决方案1】:

问题是你在用户界面线程上做你的工作:

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 和其他并发类的更多信息,这将使您摆脱一些麻烦。

【讨论】:

    猜你喜欢
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多