构建Java Swing GUI的最佳方法是什么?

5

到目前为止,我一直使用Netbeans的Swing GUI生成功能来构建我的Java应用程序的GUI界面。

现在我已经开始使用Eclipse进行我的项目开发,并放弃了Netbeans。除了手动编写GUI的所有代码之外,还有哪些其他方法可以快速且更好地构建GUI呢?

7个回答

4

过去两年中,我一直在使用 Visual EditorWindows Builder Eclipse 插件。我发现 Windows Builder 的表现非常出色!它为您提供了非常干净和易读的代码。因此,我更喜欢使用 Windows Builder,这样您就可以做到与 Microsoft Visual Studio 功能相同的“拖放等”操作。


3
您可以手动编写代码,但使用GroovyBuilders(链接)比使用纯Java更快,但您需要将Groovy库嵌入到应用程序中。
否则,存在一个称为MIG Layout的布局管理器,它运行良好(比普通GUI构建实用得多)。
我还使用了一个名为JVider的工具来构建一些简单的应用程序,但使用可视化方法总是会遇到同步界面和后端的麻烦,并考虑可视对象和变量名称之间的“绑定”。

1
我遇到了类似的情况,但发现 NetBeans 实际上有一个很棒的“导入 Eclipse 项目”的功能。因此,我最终在 NetBeans 中进行了可视化 GUI 设计工作,但使用 Eclipse 进行编码、调试和分析。NetBeans 会向您的项目添加一些文件,并且您可能希望调整 NetBeans 中的自动代码生成模板,但这对我来说是有效的解决方案。当然,Eclipse 也随附其自己的可视化 GUI 构建器,但我更喜欢 NetBeans 来进行可视化 GUI 设计和开发。 在 NetBeans 中导入 Eclipse 项目。 Eclipse 可视化编辑器项目

1
Luhar提到的Eclipse可视化编辑器项目非常不错,它可以使用任何bean样式的swing或awt组件,并支持编辑已经存在的类,因为它依赖于反射而不是单独的元数据。
此外,您可以随意操纵生成的代码,因为VEP将尽其所能在修改源文件时保持它。
如果您想将其用于更复杂的组件,则建议使用相当高端的系统,因为它需要相当多的资源。
VEP的好处如下:
  • 支持Swing/AWT/SWT
  • 使用源代码和反射,无需其他数据
  • 可以与已有组件一起使用(见上文)
  • 可以直接编辑代码或在预览窗口中编辑
  • 生成干净的代码,不会破坏现有的代码

不太好的地方:

  • 速度较慢,请不要忘记在直接编辑源代码时暂停预览功能,否则它会几乎不断地刷新。
  • 如果您的代码存在编译错误,请勿在使用预览窗口,否则对预览所做的任何更改都可能导致源代码编辑混乱。您必须在再次使用之前清理所有编译错误。

1
你可能还可以考虑使用Seesaw,它需要嵌入Clojure
你的GUI代码看起来会像这样:
(defn -main [& args]
  (invoke-later
    (-> (frame :title "Hello",
               :content "Hi there",
               :on-close :exit)
        pack!
        show!)))

在这里,“Hi there”被自动转换为JLabel,但你也可以将任何Swing组件放在:content中。

以下是我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还添加了一些功能和约定,加速了开发。

0
我个人的经验是,如果您想要轻松地点击应用程序,NetBeans 对于构建 Swing GUI 而言是最好的选择。然而,和您一样,我更喜欢在 Eclipse 中编写代码,而不是在 NetBeans 中(这是个人偏好,但我认为 NetBeans 仍然是一个很棒的编辑器)。有一段时间,我最终在 NetBeans 中创建我的 GUI,然后将项目导入到 Eclipse 中,这种方法还算可以。
这种方式还算可以,但最终我认为您会得出和我一样的结论:最好学习布局管理器,并手动编写 GUI。如果 Sun 提供的布局管理器对您来说不太适合,也可以看看 JGoodies 提供的布局管理器。

0

另一种方法是使用一些XML库,例如SwixML。需要对其进行一些代码更改才能使用,但可以很好地将UI与您的代码分离。另一方面,它只是swing类的包装器。在我看来,这既是优点也是缺点。这也是一个非常好的快速原型设计库,因为您可以(通常)尝试对话框,直到它足够令人满意。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接