【问题标题】:What should I choose SWT or Swing to program GUI in Java?在 Java 中我应该选择 SWT 还是 Swing 来编写 GUI?
【发布时间】:2010-02-17 13:36:06
【问题描述】:

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

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

我不关心困境的所有方面。下面列出了一些主要要求:

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

【问题讨论】:

标签: java swing user-interface swt


【解决方案1】:

根据您的要求,我会说 Swing。 SWT 具有更多特定于平台的外观,但 Java 内置了 Swing,尽管使用 Eclipse 可能会使这变得更容易(我仍然从不幸的是命令行)。

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

这是我的建议。随意接受或忽略,甚至称我为老笨蛋。我不会生气的:-)

【讨论】:

    【解决方案2】:

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

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

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

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

    • 原生 Java 组件有点少见。 Swing 方面的生活还有更多。

    【讨论】:

      【解决方案3】:

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

      Java 中的 GUI 开发不是很简单,但是可用的工具一直在变得更好。我建议您尝试使用具有出色的 GUI 组件可视化设计器的 NetBeans IDE。我没有使用过 Eclipse IDE 的 GUI 设计器,但我也收集了它的优点。您需要了解 MVC 模式,但这应该是一次很好的学习体验。

      简而言之,我投票赞成使用 Swing/JFC,特别是如果您是 Java GUI 开发的新手。

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

      【讨论】:

      • “JFC”?好久没听人这么叫了 ;-)
      • 我就是这样的“老派” :-)
      【解决方案4】:

      我还不能添加评论,因为我是新来的(请修改我以便我可以评论)但是选择 Swing 或 SWT 取决于您使用的 IDE。

      如果您使用的是 Eclipse,那么两者都可以。

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

      我认为您使用的是 Eclipse?

      【讨论】:

      • 为什么要评论?这是一个答案,而不是评论。但是:SWT 部署起来更复杂,因为您需要注意使用正确的版本和本机库。
      • 您会根据自己对 IDE 的偏好在应用程序中选择 Swing 还是 SWT?这不是对大山雀有点驴吗?无论如何,使用 gedit。
      【解决方案5】:

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

      • SWT 需要额外的本机库(违反第 2 项),
      • 您可能会找到更多有关 Swing 的教学材料(因为您是新手),
      • 这两种解决方案都在某种程度上独立于平台,并且在您提到的两个平台上都受支持,但 SWT 在所有平台上都不受同等支持,
      • 还有更多支持 Swing 的 WYSIWYG 工具,这可能有助于改善学习曲线。

      请注意,API 是相似的,有时甚至是相同的,因此学习一个可以让您在另一个方面占得先机。

      【讨论】:

        【解决方案6】:

        我发现 Netbeans 的拖放式可视化编辑器和预连接的 Swing 桌面应用程序模板比 Eclipse 附带的更易于使用,所以我建议这样做。

        它会自动创建一个可执行的 jar,如果您愿意,还可以让您创建一个 Java Web Start 启动器。作为 Java,它独立于操作系统。

        这是link to the quickstart tutorials

        【讨论】:

          【解决方案7】:

          摇摆,

          SWT 在 Ubuntu 上工作,但在 Windows 上几乎没有,这至少是我的经验。选择 SWT 的主要原因是如果你想在 Eclipse RCP 框架上构建你的应用程序(在那里你可以获得可停靠视图/编辑器、插件机制、自动更新、用户角色、帮助浏览器、首选项机制等),或者如果你想要你的应用程序具有优美的原生外观。

          【讨论】:

            【解决方案8】:

            根据我的经验,如果您想轻松开发 Swing,那么您应该走的路。如果您需要良好的性能,那么 SWT 是一个更好的选择。

            注意:我上一次使用 Java 进行 GUI 开发是在 4 年前。

            【讨论】:

              猜你喜欢
              • 2011-05-06
              • 1970-01-01
              • 2010-12-17
              • 2020-07-28
              • 1970-01-01
              • 1970-01-01
              • 2013-03-07
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多