Java,GUI构建器还是手工编码?

我的公司软件有很多forms,到现在为止我们手工编写了代码(MVC方式)。

我们正在考虑开始使用GUI构建器。

使用Builder时几乎没有问题。

  1. 部分代码不可读
  2. 部分代码不可编辑
  3. 以后编辑代码会更难。
  4. 我们将来必须继续使用该构建器,即使我们想要替换构建器或手工编写,也没有人能够确保该工具将来可用和支持。

我想向他人学习经验:

  • 您是否建议使用工具或我们是否应继续手动编写代码?
  • 哪个建筑商更好?
  • 他是如何处理这些问题的? (还有其他问题吗?)

对于一些表单,我建议使用Builder。 它会更快地完成。 但是,如果您需要维护很多表单一段时间,我建议您不要使用构建器。 对于这种情况,您花在阅读代码和维护上的时间远远大于初始设计时间。 因此,虽然构建器在初始阶段为您节省了一些时间,但它使代码读取和维护更加困难。 更重要的是,它使代码重复使用,即使是从一种forms复制和粘贴的forms,也更加困难。

我不知道你是指网络应用程序还是桌面应用程序,但总的来说我还没有找到能够产生优雅输出的Java Gui构建器。 例如Netbeans Swing生成的代码就是一团糟。 也许,如果一个好的建设者可用,我会改变主意。 我使用Visual Studio的表单设计器没有问题 – 它可以生成可以阅读和理解的优秀代码。

对于桌面应用程序,请查看MiGLayout 。 它是Swing和SWT的布局管理器,而不是构建器,可以让您的生活更轻松。

通过使用一个好的构建器,开发将会快得多。

您无法修改代码的焦虑可能是由于您在视图中有很多不属于它的逻辑。 实际上,这种改变可能有助于您从视图中移动逻辑,这恰好可以在不破坏代码的情况下更改视觉元素。

根据“不可读”,您应该考虑使用更好的GUI生成器。 我只听说过关于NetBeans的积极的事情,我使用的IntelliJ GUI构建器的代码非常干净。

两个源代码都是可读和可编辑的,但仅用于小调整。 对于主要的,请使用GUI构建器。

我认为对于少数几种forms,手动进行没有问题,但是由于你刚才说的有“很多”,使用这些工具将是最有益的。

这是我的经验:

我从不喜欢GUI构建器生成的代码。 至少,在VB世界中并不像每个人(好吧,差不多)都会使用相同的IDE来构建应用程序。 在Java中,人们使用多个IDE,有些人也使用VIM和Notepad。 并且所有IDE都不会生成相同类型的代码。 另一个问题是,他们通常不了解其他IDE生成的代码。 所以要回答你的第一个问题, 我不建议

您的下一个问题:哪个构建器更好? 我最后一次使用Netbeans比我尝试的大多数都要好。

如果必须使用GUI构建器,因为需要更快地开发应用程序,请确保所有团队成员都使用相同的构建器。 最好得到他们的意见,否则他们的眼睛会受到IDE生成的源代码的伤害。

让我们知道您的决定!

在过去的3年半里,我一直在使用Netbeans的Java Swing GUI Builder(Matisse)来完成我的所有项目。 我读过这么多人关于GUI Builders的抱怨,而且经验最丰富的程序员会嘲笑所有甚至暗示使用它的人,但这是我的经验:

  1. 编辑时无需编辑不可编辑的代码。 实际上,GUI Builder为您的GUI提供了一个框架。 使用编辑器拖动,删除,resize和约束组件,但是表的内容 ,combobox的列表等都需要在后端处理。 GUI构建器允许您专注于它,同时它可以使事物看起来漂亮并保持原状。
  2. 所见即所得总是更有效率。 Word处理器就是这方面的见证。 人们会告诉你:“你不会编辑那么多的GUI代码,如果能节省你的时间,那就不是那么多了。” 但这种说法非常相对。 当您在具有流程模型的软件环境中工作时,由于业务模型更改而需要不断更新,此语句为false。 另外,你把大部分时间都花在了英文文章的内容上,不是吗? 所以这个论点会说WYSIWYG Word处理器不能为你节省那么多时间,而且这样的陈述会被置若罔闻,因为没有人愿意手工编写他们的论文的外观。
  3. 没有任何GUI构建器无法做到的手写代码,而我花了几个小时尝试使用手写GUI代码解决小问题,这在GUI构建器中花了我1分钟。

特别是Netbeans的GUI构建器多年来已经变得如此好,以至于它已经收到的许多攻击(类似于Java收到的大量攻击)已经真正无效。 这是一个很棒的程序,它是一种以时间有效的方式构建function丰富,美观的界面的好方法。 我强烈推荐一个优秀的GUI Builder,尤其是Netbeans。

在那里,我说了。

不,我不为他们工作。

我会远离gui建设者。 根据我的经验(马蒂斯),你最终会花费同样的时间与建筑师手工编写gui,如果不是更多的话。 由于尝试读取生成的代码,并在进行更改时进行清理。 另外,如果你手工编写gui,你将必须理解代码以便编写gui,这将有助于加class变得更加熟练,并且你会更快地编写gui,并且你会更快并亲手编写它们。 随着时间的推移,您还可以为自己多次编写的guifunction开发一个组件库。 我会远离建设者。 一个优秀的开发人员会随时与建筑商一起击败普通开发商。

如果您没有太复杂的表单来构建,那么您可以看看DesignGridLayout ,它是Swing LayoutManager,它具有流畅的API,可以很容易地为您的表单编写代码并且易于阅读此代码(并且维护,我的意思是如果需要,可以修改)并通过代码可视化表单。

使用DesignGridLayout,表单中的一行组件是一行代码。 没有XML,完全编译时安全。 没有硬编码的间距值,对齐… DesignGridLayout为您处理所有这些。

简短的学习曲线和快速布局表单作为GUI设计师!

从大约两年前我发现它开始,我就专门使用它(由于生成的代码很糟糕,我一直对GUI设计师过敏)。 这就是我8个月前接手这个项目的原因,因为我想充分发挥它的潜力。

我们手工完成,但有一个图书馆帮助我们进行布局( JGoodies Forms )等等。 此外,我们使用一组预先插入UI( Jide )的预定义组件。 对我们来说效果很好。

多年来我使用了许多GUI设计师(针对不同的语言):Delphi,Visual Studio,JBuilder,Netbeans。

他们生产的代码质量和数量非常重要。 Delphi非常棒,它相对于表单大小生成了少量代码,代码很容易理解,双向工具允许您自信地更改生成的代码。 这是一个简单理解的GUI库的帮助。 VS产生大量代码,你很害怕改变它。

Java部分地被语言所遗忘,没有代理或闭包,因此基于事件的代码很快就会变成蔓延。

我会用Netbeans Matisse敲打简单的东西,并且 – 一旦有信心 – 手工编码。 复杂的东西值得计划和手工编码,以便您很好地定义模型。

如果您构建一个可以重用的GUI组件库,它会有所帮助。 这与具有GUI库的所有语言相关。

对于具有大量简单forms的系统,我倾向于采用XML路由 –

  • 为每个表单的信息和任何工作流定义XML文件
  • 创建XSLT以生成Java / XHTML /任何代码以在桌面PC /移动/ web上运行表单
  • 还创建XSLT以生成源代码数据对象等。

您可以使用XForms及其实现,但通常我一直在那些购买解决方案比构建您自己的简单XSLT需要更长时间的地方工作。 如果表单中没有太多专用小部件,通常需要一周时间才能启动并运行所有内容。 如果您自己创建代码生成器,则可以完全控制。 如果您发现要将所有表单从向上/向下滚动切换到列中,那么只需要更改一个位置,而不是更改每个表单的实现。 (虽然您可以创建一个框架来从Java中的表示中抽象表单信息,但它不适合这种声明性编程)

我个人喜欢将GUI布局与代码分开(否则你最终会遇到刚才提到的问题)。 它似乎也是趋势:微软有他们的XAML,你一直听到MVC的不同视图引擎等。

为什么不选择基于XML的GUI设计? 您可以尝试像JFormDesigner这样的东西,它可以处理XML和代码生成的布局。

我最近都在做这两件事 – 我正在使用Netbeans,最初因为缺乏对生成代码的控制而感到沮丧。 然后我发现您可以从GUI构建器添加自定义代码,这可以克服大多数问题。 但是,我对NetBeans中的布局管理器感到更加沮丧,并发现这对我的工作效率的影响比什么都大。 我已经切换到使用MiGLayout并手动完成大部分编码。 话虽如此,NetBeans整体上还是相当不错的,也许我应该花更多的时间来学习GroupLayout。

如果您正在进行团队开发,请确保在依赖GUI构建器时都使用相同的工具。

我过去曾使用Netbeans构建GUI代码并使用Eclipse编写程序逻辑。 只需将GUI代码作为单独的LINKED源文件夹包含在内。

我会说只有使用GUI构建器才能理解你正在尝试做的事情,你可以自己做。

如果您的表单简单而不动态,那么GUI构建器就是完美的。 forms越复杂,使用GUI构建器的好处就越少。

我工作的公司就是这样做的。 使用GUI构建器开发更简单的应用程序,并且手动完成更复杂的应用程序。 一旦有足够的时间试图解决GUI构建器的限制,它通常会被放弃。 此外,每个GUI构建器都不是同等创建的,因此您需要进行一些评估,以确定GUI构建器在哪些情况下是合适的。 (NetBeans GUI Builder非常好。)

就个人而言,我喜欢使用GUI构建器来提出整个布局和app / form并使用不同的布局,但之后我将其转换为更易读的代码,并手动完成剩下的工作。

无论您是否使用GUI编辑器构建GUI表单,我强烈建议您开发一组可以放置在表单上的标准“bean”面板。

我们在600多种forms中使用了大约100种这样的豆子。 下面是一张显示其中一个bean的图片:

在此处输入图像描述

该面板包括标准标签,强制指示器(红色星号),编辑器字段(本例中为combobox)和仅显示字段(灰色框)。 在这种情况下,combobox和仅显示字段是互斥的 – 一次只能看到一个字段,具体取决于表单/字段所处的模式。

这些bean包含我们的标准(框架)function,包括标准的外观颜色,字体等。如果我们想要改变所有这些字段的工作方式或它们的外观,我们会在一个类中更改它它会在包含它的所有表单上发生变化。

现在,我们如何建立表格? 好吧,我们在NetBeans Matisse GUI构建器中执行所有表单。 我们对它非常满意。 虽然您无法编辑它生成的代码,但我从来没有任何实例阻止我在GUI中执行某些操作。 我上面提到的bean可以很容易地添加到Palette中,因此将它们添加到表单中是一种拖放操作。

在我看来,有一些技巧,使事情变得更容易。 我们在大多数表单上使用BoxLayout (在页轴中),并结合我们的标准bean面板,构建表单几乎只需要几分钟即可完成(至少在图形方面)。 此外,如果表单上的同一“行”上有多个控件(例如多个复选框),则FlowLayout非常有用。

这也很容易,这意味着我们可以让一些(非程序员)业务分析师在程序员添加代码“引擎盖”之前构建表单。

我从VB程序员开始,然后转到C#。 我会说Netbean GUI构建器离Microsoft很远,尤其是表单中的布局管理器。 当你试图移动按钮和标签以便与你想要的东西对齐时,它会变得非常真实。那些你不想移动的图标开始在这个地方移动。

自动生成的代码也无法在源代码中进行编辑,这使得它更加非用户友好