我应该选择SWT或Swing来编程Java中的GUI?

时间:2010-02-17 13:36:07

标签: java swing user-interface swt

我需要用Java创建一个GUI应用程序。我刚才意识到我有不同的可选方式(SWT和Swing就在其中)。

我已经发现有很多关于哪种方式更好的讨论,我不想深入讨论这些讨论(我是新手)。

我并不关心这个困境的所有方面。我只是列出了一些主要要求:

  1. 它应该易于使用(易于创建我想要的东西)。
  2. 最后,我想只有一个文件可以轻松执行(没有任何额外的技巧,设置和安装),就像一个独立的应用程序。
  3. 它应该与平台无关。或者更具体地说,应用程序应该在Microsoft-Windows和Ubuntu(Linux)上正常工作。

8 个答案:

答案 0 :(得分:6)

根据您的要求,我会说Swing。 SWT有一个更加特定于平台的外观,但Java内置了Swing,与SWT一样没有外部库的混乱,尽管Eclipse的使用可以使这更容易(我仍然开发了很多我的东西)不幸的是命令行。)

它们在使用方面都很简单(很容易,一旦你习惯了布局经理就很容易)并且在你想要的平台下都可以正常工作但是因为你似乎唯一关心的区别是“没有任何额外的技巧” ,设置和装置“,我会坚持使用Swing。

这是我的建议。随意接受或忽略甚至称我为旧老傻瓜。我不会冒犯: - )

答案 1 :(得分:6)

我刚刚完成了一个为期两年的项目,创建了一个商务应用程序,所以我的重点显然是可用性和速度。

我的决定最终导致了SWT,原因如下:

  • 商务用户倾向于将终端服务器和RDP用于他们的应用程序。每个Swing应用程序都比RDP慢很多,因为应用程序必须一次又一次地渲染每个像素。尝试使用Photoshop或Gimp over RDP并开始在图像中滚动。这就是你在表格中使用Swing的表现。
  • 一些非常好的gui组件仅作为COM对象提供。我希望能够使用这些,并且由于100%的所有商务客户都是Windows用户,因此他们接受这样的事实:您的软件仅在Windows上运行。 (我们也有Linux客户端,但仅适用于机器输入终端,不需要完整的Windows GUI)。
  • 我们使用SWTDesigner作为GUI设计器,它与SwingDesignerfürWwing(它们都是最好的GUI设计者)一样好。如果你必须创造几百个面具,它们是值得的价格。
  • 我们的GUI看起来100%原生,尊重他们在桌面上使用的大字体,并且感觉很快。

我们对SWT非常满意,但它有一些缺点:

  • 原生Java组件有点罕见。生活的摇摆方面还有更多。

答案 2 :(得分:3)

如果您不熟悉Java GUI开发,我建议您使用Java的Swing库。它们有很好的文档记录,并且有许多在线教程,包括Sun的Java网站(here)。

Java中的GUI开发并不是很简单,但可用的工具一直在变得越来越好。我建议你试用NetBeans IDE,它有一个很好的GUI组件可视化设计器。我没有使用Eclipse IDE的GUI设计器,但我也收集了它的优点。你需要了解MVC模式,但它应该是一个很好的学习经验。

简而言之,我的投票是使用Swing / JFC,特别是如果您不熟悉Java GUI开发。

编辑 - 您可以非常轻松地控制Java APP的外观。如果您使用独立于平台(Metal)的外观,那么您的GUI在Windows和Linux上看起来几乎完全相同。当然,只要安装了受支持的JVM,Java应用程序就可以在* nux的Windows上正常运行。

答案 3 :(得分:2)

我无法添加评论,因为我是新来的(请修改我以便我可以发表评论)但是选择Swing或SWT取决于您正在使用的IDE。

如果你正在使用Eclipse,那么两者都没问题。

如果您使用的是免费的IntelliJ IDEA社区版,则您更喜欢使用Swing,因为IDE的GUI编辑器是“仅限Swing”。

我认为你在使用Eclipse?

答案 4 :(得分:2)

根据您的要求,我建议使用Swing:

  • SWT需要其他本机库(违反第2项),
  • 您可能会在Swing上找到更多教学材料(因为您是新手),
  • 这两个解决方案都有点独立于平台,并且在您提到的两个平台上均受支持,但并非所有平台都支持SWT,
  • 有更多WYSIWYG工具支持Swing,这可能有助于学习曲线。

请注意,API类似且有时相同,因此学习一个API会让您在另一个上有一个良好的开端。

答案 5 :(得分:1)

我发现Netbeans的拖放视觉编辑器和预先连接的Swing桌面应用程序模板更容易使用Eclipse捆绑的内容,所以我建议。

它会自动创建一个可执行jar,如果你愿意,也可以创建一个Java Web Start启动器。作为Java,它与操作系统无关。

这是link to the quickstart tutorials

答案 6 :(得分:1)

摇摆,

SWT适用于Ubuntu,但不如Windows,这至少是我的经验。选择SWT的主要原因是你想在Eclipse RCP框架上构建你的应用程序(你可以获得可停靠的视图/编辑器,插件机制,自动更新,用户角色。帮助浏览器,偏好机制等)或者如果你想要你的申请具有优雅的原生外观。

答案 7 :(得分:0)

根据我的经验,如果你想轻松开发Swing是要走的路。如果你需要良好的表现,那么SWT是一个更好的选择。

注意:我上次用Java进行GUI开发的时间是4年前。

相关问题