Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 富客户端用户界面的设计建议_Java_Swing_User Interface - Fatal编程技术网

Java 富客户端用户界面的设计建议

Java 富客户端用户界面的设计建议,java,swing,user-interface,Java,Swing,User Interface,背景: 我在web应用程序方面有丰富的经验,但我很少或根本没有RCP方面的经验。目前,我正在使用JavaSwingAPI。一切都很好。唯一的问题是,我对我的设计不是很有信心 问题: 在web应用程序中,当我们实现MVC时,我们将请求转发到视图。控制器不关心在哪里显示它。通常,所有内容都将显示在页面上。但在RCP中,我们需要知道在何处显示此表单/表格/等。。我指的是哪个面板,右或左,上或下。这需要一个对容器组件的引用,我们希望在其中显示这个东西。我们应该如何设计代码以获得该引用 接受: 我一直在引

背景:

我在web应用程序方面有丰富的经验,但我很少或根本没有RCP方面的经验。目前,我正在使用JavaSwingAPI。一切都很好。唯一的问题是,我对我的设计不是很有信心

问题:

在web应用程序中,当我们实现MVC时,我们将请求转发到
视图
控制器不关心在哪里显示它。通常,所有内容都将显示在页面上。但在RCP中,我们需要知道在何处显示此表单/表格/等。。我指的是哪个面板,右或左,上或下。这需要一个对容器组件的引用,我们希望在其中显示这个东西。我们应该如何设计代码以获得该引用

接受:

我一直在引用main类中的所有一级组件——它具有
main()
method。然后,无论我在哪里需要一些组件,我都会做一些类似的事情

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

可以吗?

MVC在RCP中并没有那么重要,人们谈论它,但基本上都是胡说八道

当然,拥有一个独立的、不依赖于任何UI代码的业务对象模型是很重要的。但视图和控制器之间的界线往往更加模糊,我不会太在意

用户界面元素自然地倾向于像您所拥有的那样组织在一个树中,尽管应该避免使用全局变量,如主面板


严重依赖观察者模式。

详细阐述Swing的模式。我发现这个概念有助于理解常用的Swing组件以及流行的工具,如。

嗯,web模式不适用于GUI(我不太喜欢术语RCP,因为它让我想起了Eclipse或NetBeans之类的GUI,并非所有GUI应用程序都必须看起来像Eclipse…),只需搜索以下一些术语:MVP,演示模型。您应该找到两个主要的参考资料:一个来自Martin Fowler,另一个来自Karsten Lentzsch(主要涉及Swing框架和模式)。我强烈建议这两种方法。顺便说一句,你可能想看看我的guts gui()项目和我放在那里的一些示例。感谢链接到guts,jfpoilpret。汤姆,这是一个很好的建议。我在使用Observer,只要它看起来合适。但现在,需要在选择树节点后在其他面板中显示表单。我正在使用TreeSelectionListener。但在listener中,我想我需要引用那个容器,在那个容器中我需要显示表单。我希望您能够看到图片。通常情况下,面板的一侧包含树,另一侧包含您希望根据选择更新的内容,正是此面板将侦听树(通过选择侦听器),然后对显示面板进行更改。很高兴提供帮助;我是Swing中MVC的粉丝。这是一个相关的例子。