摆动发电机

时间:2009-11-12 17:20:44

标签: java user-interface swing gui-designer gui-builder

我需要使用swing开发一些java gui。 几年前,我确实有一点摆动。
但是,你知道,这种情况非常令人筋疲力尽,因为没有太多工具可以帮助你。

但我相信今天它应该更容易,必须有工具。 我想使用某种发电机或者公用设施甚至是框架。 我知道Eclipse有一些插件,而Netbeans有一个很好的内置工具。我也听说过Jide框架的好消息。

但是,我真的不知道他们中的任何一个。

您是否使用过工具/实用程序/生成器/框架并真正帮助过您?

显然我更喜欢免费的东西,但如果你知道的东西真的很好并且花钱,那也可以。

谢谢。

8 个答案:

答案 0 :(得分:2)

很多年以来,我一直使用内置“Matisse”表单编辑器的NetBeans。它具有内置于IDE中的优势,因此表单编辑和代码生成相当无缝。如果您是Swing的新手,那么可以大大提升(只要您继续使用NetBeans作为IDE)。

但是有一些问题:

  1. 您无法轻松将表单移动到另一个IDE。生成的代码可能有效,但表单数据本身存储在XML文件中。
  2. 如果另外两个人同时编辑表单,SVN / CVS中可能会出现几乎无法协调的冲突。 XML并不是人类可读的。
  3. 过去我发现表单XML文件会自行损坏,这会导致表单生成错误。
  4. 表单编辑器有时可能会有自己的想法,当你做一些像调整控件大小这样简单的事情时,会破坏你的安排。
  5. 尽管如此,我还是继续使用它,因为没有别的东西对我有吸引力。

答案 1 :(得分:2)

实际上,到目前为止我写的Swing帧的更快的方法是使用Groovy SwingBuilder,但你必须在项目中包含groovy的jar来使用它。这是从他们的网站上取得的一个例子,它主要是同义糖,但它有助于:

def frame = swing.frame(title:'Frame', defaultCloseOperation:JFrame.EXIT_ON_CLOSE, pack:true, show:true) {
    vbox {
        textlabel = label("Click the button!")
        button(
            text:'Click Me',
            actionPerformed: {
                count++
                textlabel.text = "Clicked ${count} time(s)."
                println "Clicked!"
            }
        )
        widget(sharedPanel())
        widget(sharedPanel())
   }
}

否则有一些“可视化”方法解决问题,但它们不允许您如此快速地与您编写的接口集成(例如jvider),NetBeans和Eclipse有一些插件来执行脏工作但和以前一样:你无法整合这么无缝。

答案 2 :(得分:2)

我的建议是WindowBuilder Pro。它是一个GUI设计器,作为Eclipse IDE的插件。

您可以使用它来生成Swing,SWT或GWT GUI,如果需要,甚至可以生成一些Eclipse RCP代码。我必须说它对我来说效果很好。我没有使用它来生成任何Swing代码,因为我更喜欢使用SWT。

答案 3 :(得分:1)

就GUI构建器而言,NetBeans和IDEA(现在使用9.0 Beta开源)都有免费的GUI构建器。

GUI构建器具有Jason所说的各种缺点。如果您希望对正在发生的事情有良好的控制,但仍希望手动编写复杂的GUI,请查看MigLayout

答案 4 :(得分:1)

Eclipse的Visual Swing是一个很有前途的新贵。它不是世界上最稳定的东西,但它在代码中完成所有形式的东西,因此没有单独的文件难以在源代码控制中读取和合并。当你第一次尝试时,需要一些时间来适应。但是一旦你学会了解bug,就可以快速开发Swing GUI。

答案 5 :(得分:1)

如果你想使用gui构建器,我会选择w / matisse,并且Jason提到了缺点,但你还需要包含matisse布局使用的jar文件,这可能是也可能不是问题

但是,如果你要开发UI,你很快就会发现大多数gui构建器都有许多缺点,当你必须改变某些东西时,生成的代码并不总是清晰而且臃肿。你也会发现,一旦你变得精通,你就可以比gui建造者更快地写一个ui,你会真正理解发生了什么。

所以我说远离gui构建者,你将创建更好,更易维护的UI,并且有些时间和经验不会想要使用gui构建器。在布局上开始使用一些基本的Swing tutorials

答案 6 :(得分:1)

我可以谦虚地建议Metawidget吗?

它采用了不同的UI开发方法 - 在保留传统工具包的灵活性的同时,消除了大量容易出错的繁琐工作。它集成了您现有的前端(Swing,在您的情况下)和后端(Java,我猜),并在运行时工作(无代码生成)。

这里有一些简短的介绍视频:

http://metawidget.org/videos.html

如果你有机会看看,我会非常感谢你的反馈。

此致

理查德。

答案 7 :(得分:0)

您可以使用 ReflectionUI 避免 GUI 构建器生成的代码。

优点:您可以立即生成您的 GUI,然后您可以直观地对其进行自定义(或者,如果您需要非常具体的内容,则只需很少的代码)。