gpt4 book ai didi

java - Java Swing 中框架、窗口和组件之间的通信

转载 作者:行者123 更新时间:2023-12-01 17:36:57 25 4
gpt4 key购买 nike

我有一个带有 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/

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