Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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
为了便于维护和增强,最好的JavaGUI方法是什么?_Java_Swing_User Interface_Jtable - Fatal编程技术网

为了便于维护和增强,最好的JavaGUI方法是什么?

为了便于维护和增强,最好的JavaGUI方法是什么?,java,swing,user-interface,jtable,Java,Swing,User Interface,Jtable,我需要关于如何重写JavaGUI的建议。最终目标是更容易维护和增强 我构建的是一个Java小程序客户端接口,其行为和行为与Eclipse类似。开发人员无需使用一行代码(拖放)即可设计数据输入表单,并定义其属性。这部分很容易熨平。然而,我留下了40000多行代码,这些代码很难维护 每次出现错误或新的增强,我通常无法以更直接的方式编程。有一半以上的时间,我需要解决这个问题,这会增加代码行数 考虑: -Java Web小程序(因为它在任何安装了J2RE的浏览器上运行) -在低速机器上运行 -部署约20

我需要关于如何重写JavaGUI的建议。最终目标是更容易维护和增强

我构建的是一个Java小程序客户端接口,其行为和行为与Eclipse类似。开发人员无需使用一行代码(拖放)即可设计数据输入表单,并定义其属性。这部分很容易熨平。然而,我留下了40000多行代码,这些代码很难维护

每次出现错误或新的增强,我通常无法以更直接的方式编程。有一半以上的时间,我需要解决这个问题,这会增加代码行数

考虑:

-Java Web小程序(因为它在任何安装了J2RE的浏览器上运行)

-在低速机器上运行

-部署约200个节点,并不断增长

我目前存在的问题:

-听众到处都是。有时位于element.AddListener(新listener..)内。有时在类之外,可能在另一个包中,该包包含侦听器的所有其余部分。 问题:将所有侦听器放在另一个包中总是一个好主意吗?如果是这样的话,我不能用“这个”来获得我需要的参考资料

-这对我来说是个杀手:(我遇到的问题仍然存在。假设我有一个3列的JTable。第一列是下拉列表,第二列和第三列是文本字段。每当从下拉列表中选择一个值时,我需要基于所选的值,并更新到第二列和第三列。问题是,如果用户单击并快速单击其他行,它将l更新到错误行中的列

-目前,程序的编码是单线程的。每当用户与服务器端进行http连接、读取文件、写入文件等时,我都需要将其设置为异步进程,使其感觉不到“程序挂起”。最好的方法是什么


非常感谢您的帮助!谢谢!

为什么不重新使用eclipse框架来构建您自己的gui,而不是在Swing中从头开始编写它呢?

使用dsl for gui:

  • swinghtmltemplate
  • swixml
  • 亚马尔
还有一些


这将消除对监听器的描述,允许以dsl方式绑定,这里有很多问题,我不确定从哪里开始,但我很同情你这一点。除非你有一个经验丰富的团队,已经经历了Swing应用程序开发的痛苦,否则事情很快就会失控和失控能干的

在重新编写项目之前,我首先定义一些简单的开发标准。例如包结构和侦听器。我还建议将应用程序拆分为经过良好单元测试的模块或子项目

<>也问问自己,你是否真的需要重新编写应用程序,或者仅仅需要一些TLC。作为一个顾问和主管,我看到开发人员总是想要重新编写应用程序,仅仅是因为他们学到了一些新东西,或者不认为它符合标准。当他们来找我并告诉我它是垃圾并且需要重新编写时,我通常会说。我会把他们发回,让他们提出重写的替代解决方案,以及每个解决方案的影响,包括什么都不做。在很多情况下,我们根本没有编写应用程序

[更新] 最后,如果您要重新编写,我将使用and方法。是的,我说的是桌面应用程序的MVC!。我们在这些方法上取得了巨大的成功。它保持了良好的关注点分离,并使事情易于重用。它还提供了易于切换表示层的结构。最重要的是,我单元测试很容易,任何了解MVC的开发人员都可以在不了解细节的情况下了解项目的基础知识


我还有一些想法,但我现在就不谈了

在生产中,我需要处理200多个节点。部署和能够在较慢的机器上运行是选择平台的首要任务。我应该强调这一点更容易。谢谢。呃……这三个对我来说是陌生的。它们是什么?我在谷歌上快速搜索了一下,但在开发Java GUI时毫无意义。我怀疑这些是否有助于清理升级现有的Swing代码。显然问题不在于“视图”,而在于“控制器”(侦听器和操作)。这将帮助您在gui标记和控制器侦听器之间完全分离。请参见此处的示例。您可以在单独的位置获得整个表单标记,而不需要面板。添加(按钮,BorderLayout.CENTER)etc您还可以使用dsl附加侦听器,而不是使用Swinghtmltemplate的代码(忘记按钮。addActionListener(…)),它似乎不仅仅是java代码,还有maven、html(我不太喜欢标记)和css。这将导致需要维护更多的代码:(.这不是我喜欢做的事情。我必须同意你的看法,目前我在这个Swing应用程序中面临着很多问题。我意识到这很难控制,代码行在我意识到这一点的时候就会飞起来。我想保留所有的侦听器和bean,因为这就是业务逻辑所在。你认为什么是最好的?我会的我不想重写全部内容。如果你能分享一些经验,那就最好了!谢谢!在我的回答中添加了一个更新。MVC方法对于组织和构造Swing应用程序来说非常有用!听起来很有希望。谢谢michael!我正在全神贯注于如何最好地将当前应用程序重组为100%符合MVC。你能帮我澄清一下吗根据wiki的说法,是“Swing,它使用一个模型委托器模式,视图和控制器是组合的,但是模型是分开的”。这是真的吗?有人建议“Swing中的MVC实际上是MV/C”。这是正确的吗?基于“是的,我同意Swing中的MVC实际上是MV/C和模式