Java Netbeans GUI生成器
我有一个相当大的应用程序。我已经在大部分GUI工作中使用了Netbeans GUI builder。现在这个项目开始变得越来越大,我想知道这是否明智。最好是手工创建GUI,这样我就可以更好地控制它们了吗?建议远离GUI构建器还是坚持使用它。你能分享一下你的经验吗 谢谢 编辑:Java Netbeans GUI生成器,java,user-interface,netbeans,Java,User Interface,Netbeans,我有一个相当大的应用程序。我已经在大部分GUI工作中使用了Netbeans GUI builder。现在这个项目开始变得越来越大,我想知道这是否明智。最好是手工创建GUI,这样我就可以更好地控制它们了吗?建议远离GUI构建器还是坚持使用它。你能分享一下你的经验吗 谢谢 编辑: 这就是我问这个问题的原因。似乎不同的人都有自己的观点。我个人的看法是,它对于小项目来说效果很好,但当事情开始变得复杂时,GUI编辑器的使用可能会很麻烦。GUI builder会使您的开发速度更快。当然,最好是手工操作。GU
这就是我问这个问题的原因。似乎不同的人都有自己的观点。我个人的看法是,它对于小项目来说效果很好,但当事情开始变得复杂时,GUI编辑器的使用可能会很麻烦。GUI builder会使您的开发速度更快。当然,最好是手工操作。GUI构建器对于原型和快速的一次性代码非常方便。任何需要维护、定制或复杂的东西,如果用手操作,长期来看都不会那么令人头痛。远离GUI构建器。您可以对所有广泛使用Netbeans GUI builder的开发人员进行调查,他们都会分享恐怖故事。这是swing应用程序吗 Netbeans在VisualJSF上试过了,只是用谷歌搜索一下,看看效果如何
注意:如果它是一个swing应用程序(或其他桌面应用程序),那么请对我的回答持保留态度。我没有为此使用netbeans GUI开发人员。但我的总体看法是,Netbeans尝试做很多事情,但都做得很糟糕。我喜欢Swing GUI builder,我确实在大型项目中使用它 非常简单的对话框,我只是手工编写 当更改/创建更复杂的表单时,我更喜欢GUI生成器,因为我可以立即看到表单/对话框的外观
一旦你掌握了GUI构建器的诀窍,我并不觉得我对它的控制比手工编码要少 绝对是Netbeans GUI生成器。节省时间,允许快速更改和控制。适合小型或大型项目和团队发展。包括单元测试和调试。您可以使用自己的bean扩展GUI。一切都是完全透明的。你可以随时放下它并使用编辑器,我打赌你永远不会。在我看来,Netbeans GUI Builder是为数不多的能够正确完成工作的GUI构建工具之一。然而,Netbeans特别好的地方在于它不使用任何中间库或自定义XML格式来存储生成的GUI。生成的是纯Java代码。这段代码看起来也很合理,特别是如果您合理地命名组件,而不仅仅是jLabel1之类的东西。这意味着您可以使用GUI构建器,然后切换到以后手动维护代码(如果确实需要)
请注意,我从未尝试过执行类似的操作,因此可能存在一些我不知道的问题。但是,我对GUI构建器总是很满意,所以我真的不需要切换。我对大型Netbeans项目也有同样的问题。在GUI设计器中,如果我想添加一个操作,我有时会得到选项“Set action…”(在创建新的GUI时,这是不可用的,只是在再次打开Netbeans之后)。如果使用此选项,Netbeans将在initComponents()中创建 之后的所有代码都不会执行或只是部分执行(我没有仔细检查)。改用actionPerformed
这在目前是可行的,但Netbeans必须对此进行更新。我们的应用程序有600多个GUI设计的表单,我们几乎没有任何问题。如果确实遇到问题,我们通常只使用SVN放弃当前的更改,然后重试。我最近的经验是,有一个大型项目使用Netbeans GUI Builder生成的面板表单 专业人士:
- 它很快
- 它为特定于GUI的细节添加了一层抽象
- 当涉及到修复生成代码中的细节时,它会牢牢抓住开发人员的手。根据我最近的经验
- UI控件很难重构
- UI控件无法扩展和覆盖
我想说,在大型项目中使用它不是一个好主意,尤其是当需要重用和扩展UI控件时(对于大型项目几乎总是如此)。我觉得从我的经验来看,我非常同意。我不同意。我的观点是,在大多数情况下,GUI构建器比手工编写GUI要好代码维护需要了解代码的用途和模式(除了p语言);无论代码的模式是自动生成的还是手工编写的,好的文档都会处理好它定制的东西是定制的[没有双关语的意图]。你必须手工编写代码;但与流行的观点相反,我并不认为为自动生成的GUI手工编写自定义代码比手工编写代码更难。
javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance().getContext().getActionMap(GUIClass.class, this);