到目前为止,我一直在使用Netbeans Swing GUI生成功能为我的java应用程序构建GUI。
现在我已经开始将Eclipse用于我的项目并且已经删除了Netbeans。因此,除了手动编写GUI的所有代码之外,还有哪些方法可以快速且以更好的方式构建GUI。
答案 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设计和开发。
答案 3 :(得分:1)
Luhar提到的Eclipse Visual Editor项目相当不错,它可以使用任何bean样式的swing或awt组件,并且支持编辑现有的类,因为它依赖于反射而不是单独的元数据。
此外,对于如何操作生成的代码没有限制,因为VEP将在修改源文件时尽力保留它。
如果你想将它用于更复杂的组件,我会推荐一个相当高端的系统,因为它非常耗费资源
关于VEP的好消息:
不太好的事情:
答案 4 :(得分:1)
你的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与代码分开。另一方面,它只是摆动类的包装。这是恕我直言,无论是优势还是劣势。它也是一个非常好的快速原型库,因为你可以(通常)尝试对话,直到它足够。