首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理几层深度的事件

如何处理几层深度的事件
EN

Stack Overflow用户
提问于 2014-12-19 05:28:43
回答 3查看 47关注 0票数 1

我有一个相当复杂的程序,我已经设置。在该程序中有一个首选项窗口。其中一个首选项是程序连接到的服务器。当用户更改该服务器或添加另一个服务器时,程序需要“重新启动”(处置并重新创建main_window类)。

然而,我对如何做到这一点的最佳实践一无所知。以下是堆叠方法中的基本场景:

main全局类,用于启动。创建主窗口类。

向用户显示数据的main_window JFrame

具有许多用户可设置选项的prefs JFrame

Server_Editor_Dialog_Box JFrame,当用户点击OK时,必须重新启动程序

无论如何,我的问题是如何通知main在ServerEditorDialogBox中发生了一些事情,并且程序需要重新启动。我应该抛出一个异常吗?我应该有一个监听器链SEDB->prefs->main_window->main?或者我应该做一些完全不同的事情?

EN

回答 3

Stack Overflow用户

发布于 2014-12-19 05:35:05

您可能不应该使用总是以这种方式处理的异常,但这似乎是最简单的解决方案。

编程实践的最佳解决方案是使用事件侦听器,并让侦听器/处理程序调用一个方法来释放和重新创建对话框。

票数 0
EN

Stack Overflow用户

发布于 2014-12-19 05:47:35

问题是我如何通知"main“在"ServerEditorDialogBox”中发生了一些事情,程序需要重新启动“

==>由于"Server_Editor_Dialog_Box“和"main”将在单独的线程中执行,因此您需要某种全局消息传递服务,因为这两个线程都有单独的堆栈用于执行。您可以使用一个队列(集合)并将其声明为静态java。ServerEditorDialogBox可以将事件发送到队列,"main“可以轮询队列,并对其信任的事件采取相应的操作。

希望这能有所帮助

票数 0
EN

Stack Overflow用户

发布于 2014-12-20 00:43:57

我个人倾向于使用事件总线,它允许我以一种透明的方式将事件传播到各种控制器。我已经使用过,并且我可以推荐Guava's EventBus。这使您可以更好地组织代码,并与传统Java侦听器所具有的UI语义解耦。

其思想是在主类中为给定事件订阅一个方法,然后在UI代码(Server_Editor_Dialog_Box)中将其发布到总线上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27556027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档