代码之家  ›  专栏  ›  技术社区  ›  Amit

构建Java Swing GUI的最佳方法?

  •  5
  • Amit  · 技术社区  · 15 年前

    到目前为止,我一直在使用NETBeaS Swing GUI生成特性来为Java应用程序构建GUI。

    现在我已经开始在我的项目中使用Eclipse,并且放弃了NetBeans。因此,除了手动为GUI编写所有代码外,我还可以使用其他哪些方法快速、更好地构建GUI。

    7 回复  |  直到 15 年前
        1
  •  3
  •   Jack    15 年前

    您可以继续手动编写代码,但使用groovybuilders( link 这比使用普通Java要快得多,但是您需要嵌入 绝妙的 在应用程序中使用lib。

    否则,存在一个布局管理器,称为 MIG Layout ,效果很好(比普通的图形用户界面更实用)。

    我还用了一个叫做 JVider 要构建一些简单的应用程序,但是使用可视化方法,您总是会遇到同样的麻烦:保持接口和后端的同步,同时考虑可视化对象和变量名之间的“绑定”。

        2
  •  4
  •   YROjha    12 年前

    我一直在用 可视化编辑器 Windows Builder 最近2年以来Eclipse IDE的插件。我发现 窗口生成器 工作完美!它为您提供了非常干净和高度可读的代码。因此,我更喜欢使用Windows Builder,这样您就可以执行Microsoft Visual Studio功能中的所有操作。” 拖放及所有 “。

        3
  •  1
  •   Luhar    15 年前

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

    Importing Eclipse projects in NetBeans.

    The Eclipse Visual Editor project

        4
  •  1
  •   josefx    15 年前

    Luhar提到的Eclipse可视化编辑器项目非常好,它可以使用任何bean样式的swing或awt组件,并且支持编辑已经存在的类,因为它依赖于反射而不是单独的元数据。
    此外,对于如何操作生成的代码也没有限制,因为在修改源文件时,VEP会尽最大努力保留它。
    如果您想将它用于更复杂的组件,我会推荐一个相当高端的系统,因为它非常需要资源。
    蔬菜的好处:

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

    不是很好的事情:

    • 慢,不要忘记在直接编辑源代码时暂停预览功能,它将尝试不断刷新。
    • 不要在代码中有编译错误时使用预览窗口,对预览所做的任何更改都可能导致源中的编辑混乱。在再次使用之前,必须清除所有编译错误。
        5
  •  1
  •   Jason    10 年前

    你也可以考虑 Seesaw ,需要嵌入 Clojure .

    你的图形用户界面代码会看起来像:

    (defn -main [& args]
      (invoke-later
        (-> (frame :title "Hello",
                   :content "Hi there",
                   :on-close :exit)
            pack!
            show!)))
    

    其中“hi there”自动“转换”为jlabel,但您可以将 :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添加了一些功能和约定来加速开发。

        6
  •  0
  •   Hermann Hans    15 年前

    我所做的经验是,如果您希望能够一起单击应用程序,那么NetBeans与构建Swing GUI的效果差不多。不过,和您一样,我更喜欢在Eclipse中编码,而不是在NetBeans中(个人偏好,NetBeans仍然是伟大的编辑IMO)。有一段时间,我最终在NetBeans中创建了我的GUI,然后将项目导入Eclipse。

    这行得通,但最后我想你会得出和我一样的结论,学习布局管理器和手工编写图形用户界面是最好的。也许看看他们提供的 JGoodies 如果太阳提供的不适合你。

        7
  •  0
  •   tichy    15 年前

    另一种方法是使用一些XML库,比如 SwixML . 要使用它,需要进行一些代码更改,但要将UI与代码很好地分开。另一方面,它只是一个围绕Swing类的包装器。这既是一种优势,也是一种劣势。对于快速原型设计来说,它也是一个非常好的库,因为您可以(通常)尝试一个对话框,直到它足够为止。