算法的javaswing接口
我正在尝试为我正在开发的算法构建一个Swing GUI。在运行过程中,算法会不断修改GUI。我已经读到,长时间运行的任务应该从GUI中分离出来,修改swing组件应该从EDT线程中完成。然而,我需要的是这两者之间的某种重叠:运行算法,算法进行一些更改,这些更改必须反映在GUI中,算法继续执行,进行其他更改,这些更改必须再次反映在GUI中,等等 你能给我一些关于我应该用什么来实现我的目标的建议吗 提前感谢您。您应该使用:算法的javaswing接口,java,algorithm,swing,user-interface,Java,Algorithm,Swing,User Interface,我正在尝试为我正在开发的算法构建一个Swing GUI。在运行过程中,算法会不断修改GUI。我已经读到,长时间运行的任务应该从GUI中分离出来,修改swing组件应该从EDT线程中完成。然而,我需要的是这两者之间的某种重叠:运行算法,算法进行一些更改,这些更改必须反映在GUI中,算法继续执行,进行其他更改,这些更改必须再次反映在GUI中,等等 你能给我一些关于我应该用什么来实现我的目标的建议吗 提前感谢您。您应该使用: public class MyAlgorithm { void d
public class MyAlgorithm {
void doAlgorithm() {
while(notDone()) {
// Iterative work
...
// Update the UI
if(shouldUpdateUI()) {
SwingUtilities.invokeLater(() -> {
// UI update code goes here
});
}
}
}
}
如果您没有使用Java 8,只需将lambda(()->{…}
)替换为可运行的
:
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// UI update code goes here
}
});
但是要注意,UI将在另一个线程上更新,因此您可能必须获取您的状态的防御副本,并根据该副本更新UI。请查看,并感谢提供的来源:)谢谢您的帮助。我会试试看我能完成什么。