丰富客户端UI的设计建议

3

背景:

我在Web应用程序方面拥有丰富的经验,但在RCP方面几乎没有任何经验。目前,我正在使用Java Swing API工作。一切都很好。唯一的问题是,我对自己的设计不太有信心。

问题:

在Web应用程序中,当我们实现MVC时,我们会将请求转发到ViewController不关心在哪里显示它。通常所有内容都会显示在页面上。但是在RCP中,我们需要知道在哪里显示这个表单/表格等等。我的意思是指定要显示的容器组件的位置,左侧还是右侧,上方还是下方。为了获取该引用,我们应如何设计我们的代码?

建议:

我在主类中保存所有一级组件的引用--即具有main()方法的类。然后,无论我在哪里需要某些组件,我都会执行类似以下操作:

JPanel formPanel = MainApp.getMainPanel().getFormPanel();
..
JPanel treePanel = MainApp.getMainPanel().getTreePanel();

可以吗?


好的,Web模式不适用于GUI(我不喜欢RCP这个术语,因为它让我想起了像Eclipse或NetBeans这样的GUI,而不是所有的GUI应用程序都必须看起来像Eclipse...)只需谷歌以下一些术语:MVP,PresentationModel。你应该会找到两个主要参考资料:一个来自Martin Fowler,另一个来自Karsten Lentzsch(在Swing框架和模式中非常活跃)。我强烈建议你阅读这两本书。 - jfpoilpret
1
顺便提一下,您可能想看一下我的guts-gui项目(http://kenai.com/projects/guts/pages/Home)以及我在那里放置的一些示例。 - jfpoilpret
感谢 jfpoilpret 提供的 GUTS 链接。 - Adeel Ansari
2个回答

2

MVC在RCP中并不是很重要,尽管有人谈论它,但大体上都是胡说八道。

当然,拥有一个业务对象的模型,并且没有依赖于任何UI代码是很重要的。但是,在视图和控制器之间的界限常常更加模糊,所以不必过于纠结。

用户界面元素自然倾向于按树形结构组织,虽然全局变量(例如主面板)应该避免使用。

大量使用观察者模式。


很好的建议,汤姆。我正在使用Observer模式,无论在哪里都似乎很合适。但现在,需要在选择树节点时在其他面板中显示一个表单。我正在使用TreeSelectionListener来实现这个功能。但是在监听器中,我认为我需要引用那个容器,在那里我需要显示表单。我希望你能看到这个画面。 - Adeel Ansari
2
通常情况下,一个面板会在一侧包含树形结构,而在另一侧包含您想要根据选择更新的内容。这个面板会通过选择监听器来监听树形结构,然后对显示面板进行更改。 - Tom

1

很高兴能帮忙;我是Swing中MVC的粉丝。这里有一个相关的示例 - trashgod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接