我有一个带有 JPanel 的主应用程序窗口 (JFrame)。在 JPanel 上我有一些按钮。单击按钮之一后,我创建 JDialog 窗口,用户可以在其中选择两个选项:“执行”或“取消”。单击“执行”后,对话框将关闭,然后我创建某种带有进度栏的进度窗口(另一个 JDialog)。在进度窗口中,我执行了长期任务的 Swingworker。任务完成后,我显示消息对话框(JOptionPane.showOptionDialog),其中包含有关任务结果的信息(“成功”或“失败”)。此任务的结果确定主应用程序窗口的状态(我更改按钮上的标签,例如“登录”/“注销”)。如何将这个 swingworker 的结果(在方法 did() 中)“发送”到主应用程序窗口,以刷新主应用程序窗口的状态(更改按钮的标签)?我是否需要某种 Controller ,也许是监听器或仅引用主应用程序窗口?
提前谢谢你,西辛
最佳答案
将主窗口的引用沿着构造函数堆栈传递给您想要通知它的任何对象,然后向主窗口添加一个方法以接收此类通知。
例如,在主窗口 JFrame 中:
public void taskComplete(boolean succeeded) { ... }
...
JDialog dialog = new JDialog(..., this);
然后在对话框构造函数中保存对主窗口的引用,任务完成后,调用 mainWindow.taskComplete(true/false)
。
关于java - Java Swing 中框架、窗口和组件之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5328928/