2010-10-29 56 views
0

我的Java应用程序不是很大,但我想要做到“正确的方式”。寻找建议,不要做一个大混乱...Java应用程序代码结构

我正在使用Swing,Swing应用程序框架和H2数据库。

它是一个带有不同选项卡的单帧应用程序。大多数选项卡将反映数据库中数据的某些方面。其中一些将能够改变它。一些标签将有按钮或动作,将重定向到另一个标签......基本上它。

我想让事情保持干净,相当便于携带和灵活(可以启用禁用某些标签或添加一些标签)。

这里有几个问题:

1)如何有标签“刷新”数据库的内容发生变化时?实现一些Listener接口?我应该定义那个接口还是有一些已经存在的东西可以重用?

2)如何“链接”的不同选项卡在一起,这样很容易从一个到另一个(跳,可能要进行一些参数设置目的地选项卡右侧的“视图”)

3)如果我在应用程序的另一部分中设置了一些筛选器,我如何与整个应用程序共享这些设置?

当我问“如何”时,我的意思是“什么是最好的方式”......我已经可以得到这个工作......只是寻找合适的工具来使用,设计模式等等。

回答

1

如果使用swing,则可以使用选项卡式窗格来制作表格式布局。

实现一个监听器(就像你正在计划的那样)。看看Java中的可观察接口。

您可以实现一个单例(例如PreferenceManager类)来保存该首选项,并在整个应用程序中访问它以访问特性。

+0

他需要记住使用Event Dispatch Thread来修改GUI元素。 – 2010-10-29 17:36:41

2

gui应用程序构建有不同的策略。 Here一些文章。

+0

非常有趣的东西......谢谢! – Matthieu 2010-11-01 17:32:25

+1

+1为链接 – drzymala 2013-03-28 01:10:12

0

您是否真的想要一个推送模式,即服务器必须保持与每个客户端的连接,然后在发生任何更改时更新它们?这对少数客户来说是可行的,但很快就会出现问题。使用拉式模型可能会更好,客户端手动(定期地?)要求更新。这也是对数据库中的last_modified字段使用乐观锁定的好方法。尝试更新(如果自上次重新加载后发生更改),则警告用户并允许它们覆盖/合并。

至于Swing,一般来说,最好的做法是将所有与GUI无关的东西都归入核心类(“业务逻辑”),从而引发事件。将所有Swing类注册为适当的事件侦听器并适当地更新gui(SwingUtilities.invokeLater()是您的朋友)。