Java GUI框架 - 哪些在那里?

时间:2010-06-21 17:41:24

标签: java user-interface frameworks desktop-application

我主要开发Java EE,现在我需要编写一个小型的原生Java应用程序。

但是,我有点失落,哪些框架(Swing,SWT等)都在那里?其中一个还有一些快速开发吗?也许有人可以给我一些链接或分享他的经历。

8 个答案:

答案 0 :(得分:9)

Swing和SWT是两个主要候选人,是的。 JavaFX也浮现在脑海中,但我认为它尚未准备好迎接黄金时段:它没有值得谈论的UI编辑工具很长一段时间,我在现实生活中所知道的唯一的企业UI原型是一场惨败...

Swing和SWT是你可能想到的两个。 Swing的基本优势是:

  • 更多平台独立
  • 在性能方面更加一致
  • 更好的免费UI设计器(NetBeans)
  • 非常灵活
  • 可以在JavaFX中使用

SWT的优势在于:

  • 更简单的API
  • 尽可能使用本机UI小部件(UI与同一环境中的其他应用程序更相似)
  • 在某些时候,有人认为它比Swing更快,虽然这只是在Windows上

对于(NetBeans PlatformEclipse RCP)都存在相当高级的富客户端框架,如果您打算构建任何非平凡的东西,我会衷心地建议您使用其中一种:您获得模块化应用,更新机制,上下文相关帮助,菜单,热键和工具栏上的一致操作,窗口管理以及许多其他免费的优秀功能。

我使用Swing并且更喜欢它而不是SWT,因为它有一个更纯粹的组件模型(使用SWT你必须担心释放资源,因为你使用的是本机小部件),是真正的多平台(SWT适用于Windows, MacOS和Linux,甚至还没有针对所有三种方式进行优化,而且它更具可定制性。

你可能在尝试使用SWT甚至是JavaFX时都没有错,但是我很难找到一个很好的理由转而使用SWT并且只会尝试使用JavaFX检查最新技术,假设应用程序只是一个展示应用程序。

我可以撒上几个链接,但您可以轻松搜索自己并找到比您感兴趣的结果。

答案 1 :(得分:5)

还有一些不是用Java编写的GUI框架可能会满足您的需求。例如,GTK +是用C语言编写的,但是有Java语言绑定。例如,请查看java-gnome

我不知道它有多好,但快速谷歌搜索也出现了Java bindings for Qt所以也许这也值得研究。

答案 2 :(得分:3)

我做了类似的事情。我最终决定Swing App Framework,因为它并不试图成为统治它们的一个框架。

最后我写了一个小应用程序,没有任何意外,代码结果非常干净(包括在ackground任务中上传),客户很高兴,我很高兴。

它的目的是提供(从模糊中偷来)

  • 应用程序生命周期,尤其是GUI启动和关闭。
  • 支持管理和加载资源,如字符串,格式化消息,图像,颜色,字体以及桌面应用程序常用的其他类型。
  • 支持定义,管理和绑定操作,包括异步运行的操作(在“后台”中)。
  • 持久会话状态:支持从一次运行应用程序到下一次运行时自动选择性地保存GUI状态。

这正是我所需要的。

警告:在这个框架中似乎没有什么生命,因为有传言说驱动力已经让Sun / Oracle退出了一段时间。

更新:一些开发人员在名为'Better Swing Application Framework'的项目Kenai中分叉。所以毕竟可能有死后的生命

答案 3 :(得分:1)

看看Apache Pivot。它只是一个更高级别的现代框架而不仅仅是普通的Swing,它仍然使用Java而不是一直到JavaFX。它将自己定位为RIA工具包,但它可以轻松地用于独立桌面应用程序。来自网站:

  

Apache Pivot是一个用Java构建富Internet应用程序的开源平台。它结合了现代RIA工具包的增强的生产力和可用性特性以及Java平台的稳健性。 Pivot应用程序使用Java和XML的组合编写,可以作为applet运行,也可以作为独立的,可选的脱机桌面应用程序运行。 [...] Pivot包含的其他功能使构建现代GUI应用程序变得更加容易,包括声明性UI,数据绑定,效果和转换以及Web服务集成。

答案 4 :(得分:1)

我认为JavaFX是一个不错的选择,因为它具有良好的用户界面和Swing的所有功能

答案 5 :(得分:0)

免费NetBeans IDE具有Swing和JavaFX的可视化布局工具。

答案 6 :(得分:0)

GWT也可以作为基于Java的应用程序的优秀UI工具。由于GWT中的代码与Java代码相同。另外一件事是GWT自己的处理浏览器兼容性。它具有丰富的小部件工厂,国际化,安全性和更多功能。

答案 7 :(得分:-2)

我建议不要使用布局工具;代码很难阅读和维护。

另外,如果您需要对对象进行数据库访问,那么如果您的应用需要使用多个线程,netbeans将使实体管理器保持打开状态并在以后产生重大麻烦和错误。