【发布时间】:2014-12-17 11:03:50
【问题描述】:
我必须在 gui 中执行一项长时间运行的任务。 我想在执行此操作时阻止用户输入并使窗口变灰。 为此,我在表单中添加了一个全场景窗格:
<Pane
visible="false"
opacity="0.50"
style="-fx-background-color: gray;"
fx:id="paneBlocker" />
我打算使用的代码:
private void doLongTask() {
showBlocker(true); // Shows the blocker pane and blocks the input
Platform.runLater( () -> {
longTask();
otherTaskModifyingGui();
showBlocker(false); // Hide blocker
});
}
我认为这将是异步的,所以在 showBlocker 中所做的更改会生效,但它不会。
我还尝试将长任务移动到另一个线程:
private void doLongTask() {
showBlocker(true);
new Thread(() -> {
longTask();
Platform.runLater(() -> {
otherTaskModifyingGui();
showBlocker(false);
});
}).run();
}
它也不起作用。 :-(
如何强制 GUI 显示拦截器?
【问题讨论】:
标签: javafx