如果Swing已被弃用,那么有什么替代方案?

22

我听说 Swing 不再被开发了。我喜欢 Swing 并且一直在使用它。

现在我应该使用什么替代品呢?


尽管从外部看来Oracle已经大大减少了对Swing的工作量,但是“新的Swing”JavaFX(实际上我不喜欢这种称呼,因为它与Swing几乎没有任何共同点)在我看来还没有准备好进入主流。我相信Swing仍然有很长的生命力(至少还有2到3年)。 - jfpoilpret
相关: "JavaFX是Swing的完全替代品吗?" https://dev59.com/6WUp5IYBdhLWcg3wTGTe - 8bitjunkie
6个回答

32

我从未听说过这样的事情,而且仍在开发swing应用程序。 不要让谣言获得翅膀。

但是作为替代方案,您可以使用JavaFxswtbuoy

2
在Netbeans IDE帮助文件中,如果您搜索“swing”,您会找到一个名为“关于Swing应用程序框架”的页面。它说:“Swing应用程序框架(JSR 296)不再开发,并且不会像最初计划的那样成为官方Java开发工具包的一部分。它仍然包含在IDE中,您可以按原样使用此库,但不会有进一步的开发。嗯嗯...”它建议改用Netbeans平台(我想这回答了我的问题,但我不知道Netbeans平台是什么)。 - Dean
8
@Dean: 应用程序框架是一个计划为Java 7设计的JSR,现在被推迟了。它不是Swing,而是一个计划中的增强功能,旨在使构建Swing应用程序更加容易。 - Lawrence Dol
哦!我想我对整件事情感到困惑。谢谢你为我澄清这个问题。 - Dean
1
这对于Swing来说是一个非常不幸的名字。Dean在这里并不是第一个将它们混淆的人。 - Rekin

16

你可能读过关于“Swing应用程序框架”的一些内容,尽管它是使用Swing构建的,但并不是“Swing”本身。


摘自Swing Application Framework - Status and Roadmap

一个名为appframework的开源参考实现的开发始于2006年[1]。最初预计这个实现将成为将JSR 296集成到即将发布的Java编程语言Java SE 7(Dolphin)版本中的手段,并且该项目计划在JDK7开发的第5个里程碑中包含。然而,由于在里程碑5截止日期之前无法协调设计缺陷和实现JSR 296小组达成共识,因此在2009年8月宣布不会将该项目包括在其中[2]。

原始的Swing应用程序框架实现已经无限期地搁置了[3]。 appframework项目的最后一个公共版本是1.03版[1]。


4
自那时起,SAF已经被分叉并以“BSAF”为名继续存在。该项目现在似乎仍然在活跃着。 - jfpoilpret

7

2019年1月最新

供参考,自Java SE 9起,AWT和Swing已经移动到java.desktop。您可以在此处查看未来的更改。自Java 11中正式JDK中删除了JavaFX(自JDK 8以来已添加)。因此很难确定什么是“官方”的了。然而,JavaFX的开发自解耦后有所增加,并在这里找到了新家。


6

虽然这个问题比较老,但是还是值得参考:

JavaFX是否正在取代Swing成为Java SE的新客户端UI库?

是的。不过,Swing将在可预见的未来仍然作为Java SE规范的一部分,并包含在JRE中。尽管我们建议开发人员在构建新应用程序时尽可能利用JavaFX API,但可以使用JavaFX扩展Swing应用程序,从而实现更平滑的过渡。

http://www.oracle.com/technetwork/java/javafx/overview/faq-1446554.html#6


1

0

Swing没有任何问题。个人而言,我不喜欢SWT。在对话框被销毁之前,你需要从小部件中读取输入值并将其存储在普通变量中。


如果您正在使用SWT,那么您也可以使用JFace。它提供了一组类似于许多Swing模型的查看器(模型驱动)。 - Paul Webster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接