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

时间:2010-03-01 05:02:37

标签: java swing

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

现在我已经开始将Eclipse用于我的项目并且已经删除了Netbeans。因此,除了手动编写GUI的所有代码之外,还有哪些方法可以快速且以更好的方式构建GUI。

7 个答案:

答案 0 :(得分:4)

自从过去两年以来,我一直在使用 Visual Editor Windows Builder插件进行eclipse IDE。我发现 Windows Builder 非常完美!它为您提供非常干净和高度可读的代码。所以我更喜欢使用Windows Builder,这样你就可以做任何你在微软Visual Studio功能中找到的所有功能“拖放和所有”。

答案 1 :(得分:3)

您可以手动编码,但使用GroovyBuilders(link),这比使用普通java要快得多,但您需要在应用程序中嵌入 Groovy lib ..

否则存在一个名为MIG Layout的布局管理器,它运行得很好(它比普通的gui构建更实用)..

我还使用了一个名为JVider的工具来构建一些简单的应用程序,但是使用可视化方法你会得到同样令人讨厌的东西:保持接口和后端同步,同时考虑视觉对象和变量之间的“绑定”命名..

答案 2 :(得分:1)

我遇到了类似的情况,但发现NetBeans实际上有一个漂亮的“导入eclipse项目”功能。因此,我最终在NetBeans中进行可视化GUI设计工作,但使用Eclipse进行编码,调试和分析。 Netbeans为您的项目添加了一些文件,您可能想要在NetBeans中调整自动代码生成模板,但这是一个适合我的解决方案。当然,Eclipse还附带了自己的可视GUI构建器,但我更喜欢NetBeans用于可视化GUI设计和开发。

Importing Eclipse projects in NetBeans.

The Eclipse Visual Editor project

答案 3 :(得分:1)

Luhar提到的Eclipse Visual Editor项目相当不错,它可以使用任何bean样式的swing或awt组件,并且支持编辑现有的类,因为它依赖于反射而不是单独的元数据。 此外,对于如何操作生成的代码没有限制,因为VEP将在修改源文件时尽力保留它。
如果你想将它用于更复杂的组件,我会推荐一个相当高端的系统,因为它非常耗费资源 关于VEP的好消息:

  • 支持Swing / AWT / SWT
  • 使用源代码和反射无需其他数据
  • 可与现有组件一起使用(见上文)
  • 可以直接编辑代码或在预览窗口中编辑
  • 在不破坏现有代码的情况下生成外观整洁的代码

不太好的事情:

  • 慢,不要忘记在直接编辑源代码时暂停预览功能,它会尝试几乎不断刷新。
  • 在代码中出现编译错误时,请勿使用“预览”窗口,对预览所做的任何更改都可能导致源中的编辑混乱。在再次使用之前,您必须清除任何编译错误。

答案 4 :(得分:1)

您还可以考虑Seesaw,这需要嵌入Clojure

你的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增加了一些加速开发的功能和约定。

答案 5 :(得分:0)

我所做的经验是,如果你想能够一起点击你的应用程序,Netbeans就像构建Swing GUI一样好。然而,就像你一样,我喜欢在eclipse中编写比Netbeans更多的编码(个人偏好,Netbeans仍然是伟大的编辑器imo)。有一段时间我最终在Netbeans中创建了我的GUI,然后只是将项目导入到eclipse中。

这没关系,但最后我想你会得出我所做的相同结论,最好是学习布局管理器并手工编写GUI。也许看一下JGoodies提供的那些,如果Sun提供的那些不适合你。

答案 6 :(得分:0)

另一种方法是使用一些XML库,如SwixML。要使用它需要一些代码更改,但很好地将UI与代码分开。另一方面,它只是摆动类的包装。这是恕我直言,无论是优势还是劣势。它也是一个非常好的快速原型库,因为你可以(通常)尝试对话,直到它足够。