2010-03-01 107 views
4

到现在为止,我一直在使用Netbeans Swing GUI生成功能为我的Java应用程序构建GUI。构建Java Swing GUI的最佳方法?

现在我已经开始在我的项目中使用Eclipse了,并且丢弃了Netbeans。因此,除了手动编写GUI的所有代码之外,我还可以通过其他方式快速并以更好的方式构建GUI。

回答

2

你可以把手动编码,但使用GroovyBuilders(link),它们比使用普通的Java,但你将需要嵌入你的应用程序中的Groovy LIB足够快..

否则存在一个布局管理器,所谓MIG Layout,这工作得很好(这是更实际的,正常的GUI应用程序).​​.

我还使用了一种叫做JVider建立一些简单的应用程序的工具,但使用一个可视化的方法,你总是得到同样的讨厌的事情:保持界面和后端同步,也考虑到可视对象和变量名称之间的“绑定”。

0

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

这工作正常,但最终我认为你会得出同样的结论,只是最好学习布局管理器并手动编写GUI。也许看看JGoodies提供的那些,如果Sun提供的只是不适合你。

1

我碰到过类似的情况,但发现NetBeans实际上有一个漂亮的'import eclipse project'功能。所以,我最终在NetBeans中完成了可视化GUI设计工作,但是使用Eclipse进行编码,调试和分析。 Netbeans会将一些文件添加到您的项目中,并且您可能想要调整NetBeans中的自动代码生成模板,但这是一种适用于我的解决方案。当然,Eclipse也附带自己的可视化GUI构建器,但我更喜欢NetBeans进行可视化GUI设计和开发。

Importing Eclipse projects in NetBeans.

The Eclipse Visual Editor project

0

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

1

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

  • 支持摇摆/ AWT/SWT
  • 使用源代码和反射没有额外的数据
  • 可与已经存在的组分可以使用必需的(见上文)
  • 可以直接或预览窗口中编辑代码
  • 生成干净美观的代码,而不会破坏现有的代码

不是很好的事情:

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

我一直在使用可视化编辑器Windows Builder插件,因为过去2年的Eclipse IDE。我发现Windows生成器工程完美!它为您提供非常干净和高度可读的代码。所以我更喜欢使用Windows生成器,这样你就可以做任何你在微软Visual Studio功能“拖放和全部”中发现的任何事情。

1

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

你那么GUI代码看起来是这样的:

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

其中“你好”被自动“转换”到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!)))) 

跷跷板和Clojure中的优点是很多的样板代码和跷跷板增加了一些功能和加快发展的各项公约的消除。