我应该继续为我的桌面应用程序使用 Swing 吗?

Should I keep using Swing for my desktop application

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

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

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

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

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

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

我在书上看到 Oracle 打算用 JavaFX 取代 Swing。

看看下面的问答:

6. Is JavaFX replacing Swing as the new client UI library for Java SE? Yes. However, Swing will remain part of the Java SE specification for the foreseeable future, and therefore included in the JRE. While we recommend developers to leverage JavaFX APIs as much as possible when building new applications, it is possible to extend a Swing application with JavaFX, allowing for a smoother transition.

你可以看到原评论here

这种情况,相信可以考虑给用户JavaFX

更多详情here and good examples here

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

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

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

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

关于JavaFX,我个人没有留下深刻印象。您可以看一下,但 JavaFX 给我的印象是需要更多 "bake" 时间。我还不会放弃 Swing。

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

  • Java FX更强大更漂亮
  • 我们可以说swing被java FX取代了。
  • 现在没有人使用 swing,因为 java FX 比 swing 有很多优势
  • 它有一个名为 scaneBuilder 的好功能,我们只需将组件拖放到适当的位置即可节省大量时间。
  • 不同类型的布局可以吸引人地放置组件。
  • 无礼我们可以用CSS来设计UI这样更漂亮更有吸引力
  • 我们也可以与 Web 组件集成。

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

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