【问题标题】:Should I keep using Swing for my desktop application [closed]我应该继续在我的桌面应用程序中使用 Swing [关闭]
【发布时间】:2016-03-10 15:50:13
【问题描述】:

我目前正在开发一个应用程序,其代码库至少可以追溯到 2001 年。该系统的组件之一是使用 Java Swing 编写的桌面客户端。它使用大多数好的旧布局,包括 BorderLayout、FlowLayout 和 Gridbag 布局。我们需要定期管理和更新许多相当复杂的屏幕,有时我们需要使用新的用户界面创建新功能。

有什么比 Swing 更好的东西我们可以考虑迁移到吗?

是否可以分阶段进行此迁移(即,我们将在长期迁移阶段将旧 Swing 组件与新组件混合使用)?

如果我们今天用 Java 重写桌面客户端,我们还应该使用 Swing 吗?

我发现自己主要使用 GridBagLayout,这仍然是更复杂布局的首选工具还是我可以使用更好的布局?

【问题讨论】:

  • 不要使用 IDE 来生成布局代码。然后你被锁定在 IDE 中。而是使用适当的布局管理器组合来获得所需的布局。您可以将具有不同布局的面板嵌套到父面板中。这使您可以在逻辑上为每个面板创建具有适当布局的面板。
  • 您真正需要问的问题是,是否值得付出努力。您的应用程序是否真正需要某些功能(例如更好的 html 支持或媒体支持)?如果没有,在 Swing 中维护代码库也不错

标签: java swing layout-manager


【解决方案1】:

我在书中读到 Oracle 打算用 JavaFX 取代 Swing。

看看下面的问答:

6. JavaFX 是否正在取代 Swing 作为 Java SE 的新客户端 UI 库? 是的。然而,在可预见的未来,Swing 仍将是 Java SE 规范的一部分,因此包含在 JRE 中。虽然我们建议开发人员在构建新应用程序时尽可能利用 JavaFX API,但可以使用 JavaFX 扩展 Swing 应用程序,从而实现更平滑的过渡。

你可以在那里看到原始评论here

在这种情况下,我相信你可以考虑给用户JavaFX

更多细节here 和很好的例子here

【讨论】:

    【解决方案2】:

    如果您使用的是 Java 8,则可以将 javafx 用于新组件。可以将 Swing 组件与 javafx 一起使用。

    【讨论】:

    • JavaFX 需要 java 8 吗?
    • 不可以与 java 7 一起使用,但最后一个版本包含在 java 8 中
    【解决方案3】:

    您仍然可以使用 java swing,但如果您需要迁移,您可以使用 JavaFX(同样是桌面客户端)分阶段迁移。如果您需要使用 Web 客户端,那么您可以使用 GWT(这很有帮助,因为开发人员已经了解了 UI 组件)并且 GWT 代码是在 Java 中,而 Javascript 是在编译时生成的。

    【讨论】:

      【解决方案4】:
      • Java FX 更强大更美观
      • 可以说swing被java FX取代了。
      • 现在没有人使用 swing,因为 java FX 比 swing 有很多优势
      • 它有一个很好的功能,叫做 scaneBuilder,我们可以将组件拖放到适当的位置,这样可以节省大量时间。
      • 不同类型的布局可以吸引人地放置组件。
      • 不客气我们可以使用CSS来设计UI,这样更漂亮更有吸引力
      • 我们还可以与 Web 组件集成。

      【讨论】:

      • “和美丽”这是一个见仁见智的问题 - 我有客户会反对这一点; *“现在没有人在使用 swing” - 我看到更多基于 Swing 的工作,然后是 JavaFX 工作; “它有一个叫做 scaneBuilder 的好功能” 另一个很棒的表单编辑器,因为那从来不是问题:P; “不同类型的布局可以吸引人地放置组件” 8| ...我认为您当时(或创造性地)从未学会正确使用布局管理器;)
      【解决方案5】:

      如果您要完全重做布局,我会看看使用 Spring 布局的 Matisse。

      https://netbeans.org/features/java/swing.html

      使用布局工具获取组件之间的关系比尝试在 GridBag 或类似的东西中手动排列所有内容要容易得多。

      如果您不重做代码的主要部分,我不会动它。不要修复没有损坏的东西。

      关于JavaFX,我个人并没有被它打动。你可以看一下,但 JavaFX 让我觉得需要更多的“烘烤”时间。我还不会放弃 Swing。

      【讨论】:

      • 我更喜欢 JFormDesigner。它比 Matisse 更容易使用。
      【解决方案6】:

      如果您需要 Java 桌面客户端看起来像某些平台(Windows、MacOS、Linux)的本机应用程序,您可以查看Standard Widget Toolkit (SWT) library

      使用该库的一个著名应用示例是Eclipse IDE。另一个 - Angry IP Scan, sources are 在 GitHub。

      【讨论】:

        猜你喜欢
        • 2013-05-17
        • 1970-01-01
        • 1970-01-01
        • 2011-01-19
        • 2012-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多