gpt4 book ai didi

用于算法的 Java swing 接口(interface)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:57:57 24 4
gpt4 key购买 nike

我正在尝试为我正在开发的算法构建一个 Swing GUI。在运行过程中,算法会不断修改GUI。我读到长时间运行的任务应该与 GUI 分开,修改 swing 组件应该从 EDT 线程完成。然而,我需要的是这两者之间的某种重叠:运行算法,算法进行一些更改,这些更改必须反射(reflect)在 GUI 中,算法继续执行,进行另一次更改,再次必须反射(reflect)在图形用户界面等。

关于我应该使用什么来实现我的目标,您能给我一些建议吗?

提前谢谢你。

最佳答案

你应该使用 SwingUtilities.invokeLater为此:

public class MyAlgorithm {

void doAlgorithm() {
while(notDone()) {
// Iterative work
...
// Update the UI
if(shouldUpdateUI()) {
SwingUtilities.invokeLater(() -> {
// UI update code goes here
});
}
}
}
}

如果您不使用 Java 8,只需将 lambda (() -> { ... }) 替换为 Runnable:

SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// UI update code goes here
}
});

请注意,UI 将在另一个线程上更新,因此您可能必须获取状态的防御性副本并根据它更新 UI。

关于用于算法的 Java swing 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30204360/

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