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

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

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

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

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


真正的问题:

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

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

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

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

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

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

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


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

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

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

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

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

  1. 这里检查Swing中的MVC; 使用嵌套类来简化原型设计并为将来的问题创建一个mcve ; 在需要时,可以将嵌套类提升为具有包私有访问权的单独类。

  2. 使用JTable ; 它的渲染器的 flyweight实现有利于按行和列组织数据。

  3. 如果您计划拖动列或对行进行排序,则第3项不存在,但“始终记得转换单元格坐标”。

  4. 使用JScrollPane使表头保持静止。

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

如果您不仅对事件/消息传递体系结构感兴趣,还对处理鼠标/键盘输入,hover检测,小部件,临时菜单,使用小部件对齐重新resize,拖放等等感兴趣。我可以建议您查看他的问题和我的答案与有用的资源。