适用于大型项目的Java GUI架构

时间:2014-08-14 20:43:51

标签: java swing user-interface architecture

我想创建一个应用程序,它将作为多个服务器的接口。 原因:在默认情况下提供的web iface(我们无法改变它)是我们想念的一些事情,很少有人可以做得更好,并且确保某些东西的自动化会使工作变得更容易。

我有什么:几乎完成的课程,用于与服务器应用程序的Web界面进行通信。

GUI描述: 对于某种版本0.1:用户名的文本字段,选择服务器的单选按钮和一个“go”按钮。然后几个(4-12)操作按钮操作数据,2x文本区域与结果,一个标签与一些文本数据 - 我可以管理这个。 然后我需要查看数据 - 网格MxN将加载数据,预期大小:7-15列,通常10行或更少,但很少它可以超过1k(甚至更多,但我不需要所有在这种情况下对用户可见。)

我需要的是:只是一个建议。 我希望从一个简单的版本开始(我已经开始研究它了,但是我坚持太多的事情 - 95%的cos和GUI的全新,5%的cos我是java的新手)。 我已经检查了很多教程,但它们都很简单。


真正的问题:

1)验证。在MVC控制器中应该处理所有用户操作 - 它是通过view的方法完成的,类似于button.addActionListener(param); anotherButton.addActionListener(paramp; ...?

1b)我已经看到所有通过一个(嵌套)类实现,然后检查源或smth - 这样可以吗?会有很多按钮等。

2)如何实现数据网格,当我需要对click / dbl点击进行操作时?

4)第一行是标题,其余的应该是可滚动的 - 如果它在网格中或在外面(它自己的网格):

4a)如何确保标题的大小(宽度)与数据相同(我不想设置直接大小)

4b)到目前为止,我没有创建任何可滚动的东西,但我认为这很糟糕。如何确保标题将保留在某个位置,其余的可以滚动?

5)应该如何实施“数据更新”?我有JPanel从中删除网格组件,然后我创建新的并添加数据(简单,但perhapss有另一种方式)。第一个增强功能之一是排序 - 使用与新内容相同的方式?


非常感谢任何答案,我知道这不是很具体,但我发现的例子太简单了。

我计划了很多增强功能,但未来会有这样的改进,我不介意多次重做GUI / Controller,至少我会练习,但我不想完成代码的一部分并意识到我必须重写一半的控制器和1/4的视图才能使它成为可能。

注意:我打算在工作中使用它作为我的工具(如果事情是正确的,我只需点击几下就可以完成25-50%的工作:-) 所以我的意思是这个。)

注意#2:我不是编程的新手,但我从来没有创建过GUI(这就是为什么我有带有2个项目和3个组件的菜单栏的GUI,几乎完成了web-iface连接)。< / p>

注意#:3个可拖动的数据标题,标签数据视图 - 这是未来的计划: - )

2 个答案:

答案 0 :(得分:6)

  1. 检查Swing中的MVC here;使用nested classes可以轻松进行原型设计,并为将来的问题创建mcve;在需要时,可以将嵌套类提升为具有package-private访问权限的类。

  2. 使用JTable;它的renderers的flyweight实现适用于按行和列组织数据。

  3. 如果您打算拖动列或对行进行排序,则第3项不存在,但“始终记住translate单元格坐标”。

  4. 使用JScrollPane使表格标题保持不变。

  5. 更新TableModel,监听视图会自行更新。

答案 1 :(得分:0)

如果您不仅对事件/消息传递架构感兴趣,还对处理鼠标/键盘输入,悬停检测,小部件,临时菜单,使用小部件对齐重新调整大小,拖放等感兴趣。我可以建议您用有用的资源来查看t his question和我的答案。