如何动态更改警报文本?

时间:2018-03-29 09:03:11

标签: 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

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

1 个答案:

答案 0 :(得分:0)

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

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

这会阻止用户界面和任何更新。在JavaFX中,每个&#39; tick&#39;都会进行更新。用户界面调度程序。如果更新用户界面项的属性,则在UI线程进入下一个刻度之前,它们将不会被处理。

要完成工作,您需要将其移出用户界面线程并使用update it机制。查看JavaFX concurrency以获取有关Worker和其他并发类的更多信息,这将使您无法解决问题。