gpt4 book ai didi

java - 如何从其他线程更改 UI

转载 作者:行者123 更新时间:2023-11-29 04:49:24 26 4
gpt4 key购买 nike

我想在其他线程中更改 UI 并尝试了这种方式-

SwingUtilities.invokeLater(new Runnable() {
public void run() {

try {
Thread.sleep(5000);
lblToast.setText(6+"");
} catch (InterruptedException ex) {
Logger.getLogger(FXMLDocumentController.class.getName())
.log(Level.SEVERE, null, ex);
}
}
});

但是这段代码不起作用。

最佳答案

在 JavaFX 应用程序线程上运行某些东西的基本设施是 Platform.runLater() .但是,根据您的评论,您似乎还想在延迟后在 JavaFX 应用程序线程上运行某些东西,所以这就是这个答案所要解决的问题。


下面的代码将在 5 秒延迟后安排在 JavaFX 应用程序线程上执行某些操作:

Platform.runLater(() -> {
PauseTransition pause = new PauseTransition(Duration.seconds(5));
pause.setOnFinished(event -> doSomething());
pause.play();
});

在你的例子中,doSomething() 是:

lblToast.setText(6+"");

这类似于以下解决方案:

与使用 ScheduledExecutorService 相比,PauseTransition 的一个(次要)优势是转换不需要额外的线程。一个缺点是 ScheduledExecutorService 返回一个 ScheduledFuture,这可能会让您对流程有更多的控制,因为您可以在 ScheduledFuture 上调用诸如 cancel() 或 isDone() 之类的方法(尽管额外的控制对于您的应用程序可能并不重要)。

关于java - 如何从其他线程更改 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35980899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com