【发布时间】:2011-01-22 04:13:44
【问题描述】:
到目前为止,我一直在使用 Netbeans Swing GUI 生成功能为我的 Java 应用程序构建 GUI。
现在我已经开始在我的项目中使用 Eclipse 并放弃了 Netbeans。因此,除了手动编写 GUI 的所有代码之外,还有哪些其他方法可以让我以更好的方式快速构建 GUI。
【问题讨论】:
到目前为止,我一直在使用 Netbeans Swing GUI 生成功能为我的 Java 应用程序构建 GUI。
现在我已经开始在我的项目中使用 Eclipse 并放弃了 Netbeans。因此,除了手动编写 GUI 的所有代码之外,还有哪些其他方法可以让我以更好的方式快速构建 GUI。
【问题讨论】:
自过去 2 年以来,我一直在为 Eclipse IDE 使用 Visual Editor 和 Windows Builder 插件。我发现 Windows Builder 非常完美!它为您提供了非常干净和高度可读的代码。所以我更喜欢使用 Windows Builder,这样你就可以做任何你在 Microsoft 的 Visual Studio 中找到的功能“拖放和所有”。
【讨论】:
您可以继续手动编码,但使用 GroovyBuilders (link) 比使用纯 java 快得多,但您需要在应用程序中嵌入 Groovy 库..
否则存在一个名为MIG Layout 的布局管理器,它工作得很好(它比普通的 gui 构建更实用)..
我还使用了一个名为JVider 的工具来构建一些简单的应用程序,但是使用可视化方法总是会遇到同样令人讨厌的事情:保持界面和后端同步,还要考虑可视对象和变量名称之间的“绑定”。 .
【讨论】:
我遇到了类似的情况,但发现 NetBeans 实际上有一个漂亮的“导入 Eclipse 项目”功能。因此,我最终在 NetBeans 中完成了可视化 GUI 设计工作,但使用 Eclipse 进行编码、调试和分析。 Netbeans 将一些文件添加到您的项目中,您可能想要调整 NetBeans 中的自动代码生成模板,但这是一个适合我的解决方案。当然,Eclipse 也附带了自己的可视化 GUI 构建器,但我更喜欢 NetBeans 进行可视化 GUI 设计和开发。
【讨论】:
Luhar 提到的 Eclipse Visual Editor 项目非常好,它可以使用任何 bean 样式的 swing 或 awt 组件,并且支持编辑已经存在的类,因为它依赖于反射而不是单独的元数据。
此外,您如何操作生成的代码也没有任何限制,因为 VEP 在修改源文件时会尽力保留它。
如果您想将它用于更复杂的组件,我会推荐一个相当高端的系统,因为它非常消耗资源。
VEP 的优点:
不是很好的东西:
【讨论】:
您的 GUI 代码将如下所示:
(defn -main [& args]
(invoke-later
(-> (frame :title "Hello",
:content "Hi there",
:on-close :exit)
pack!
show!)))
“Hi there”会自动“转换”为 JLabel,但您可以为 :content 放置任何 Swing 组件。
我的seesaw-buttons 示例项目中的这个更复杂的示例:
(ns seesaw-buttons.core
(:use seesaw.core))
(defn -main [& args]
(invoke-later
(let [open-action (action
:handler (fn [e] (alert "I should open a new something."))
:name "Open ..."
:key "menu O"
:tip "Open a new something something.")
exit-action (action
:handler (fn [e] (.dispose (to-frame e)))
:name "Exit"
:tip "Close this window")]
(-> (frame :title "Hello",
:content (border-panel
:north (toolbar :items [open-action exit-action])
:center "More content here..."),
:on-close :exit)
pack!
show!))))
Seesaw 和 Clojure 的优势在于消除了许多样板代码,并且 Seesaw 添加了一些加快开发速度的功能和约定。
【讨论】:
我的经验是,如果您希望能够一起单击您的应用程序,Netbeans 几乎与构建 Swing GUI 一样好。然而,就像你一样,我更喜欢在 eclipse 中编码而不是在 Netbeans 中(个人偏好,Netbeans 仍然是很棒的编辑器 imo)。有一段时间我最终在 Netbeans 中创建了我的 GUI,然后只是将项目导入到 Eclipse 中。
这没问题,但最后我想你会得出和我一样的结论,那就是最好学习布局管理器并手动编写 GUI 代码。也许看看JGoodies提供的那些,如果Sun提供的那些不适合你。
【讨论】:
另一种方法是使用一些 XML 库,例如 SwixML。要使用它需要一些代码更改,但可以很好地将您的 UI 与您的代码分开。另一方面,它只是摇摆类的包装。恕我直言,这既是优点也是缺点。它也是一个非常好的快速原型设计库,因为您(通常)可以尝试一个对话框,直到它足够为止。
【讨论】: