我和Swing一样,刚开始学习JavaFX。关于使用哪一个,我在SO上找了几个答案,我仍然无法下定决心。
是否有可能充分利用这两个世界?
比如,使用JavaFX,我想给出一些视觉上吸引人的图形,并在我想要的时候为JavaFX添加一些Swing?
答案 0 :(得分:3)
您可以通过JavaFX in Swing applications控件使用JFXPanel。请参阅SwingInterOp示例。您还可以从基于Swing的复杂平台(如NetBeans RCP。
)中使用JavaFXJavaFX / Swing集成的当前限制是您可以在Swing应用程序中嵌入JavaFX组件,但不能在JavaFX应用程序中嵌入Swing组件。 RT-12100 Swing in JavaFX embedding support目前计划用于Java 8。
如果你有一个绿色领域的新应用程序要开发,我建议选择一种技术或另一种技术并坚持这一点,或者至少保持集成点本地化,少之又少。这两个框架都很大,需要时间来学习,而且你将避免任何集成问题,例如需要注意在Swing Event Dispatch线程上完成Swing处理,并且在JavaFX应用程序线程上完成JavaFX处理。
JavaFX还与SWT集成,并且该集成目前比JavaFX / Swing集成更简单(因为只需要担心一个GUI线程)。
以下是Oracle的JavaFX / Swing互操作示例的屏幕截图:
关于使用哪一个,我在SO上找了几个答案,我仍然无法下定决心。
我建议选择一个小应用程序,然后在Swing和JavaFX中从头开始实现它,看看你喜欢哪个。现在花时间更好,因为没有替代经验的手 - 那么,如果你仍然有问题(希望更具体和有针对性),请回到StackOverflow进行研究或询问。
答案 1 :(得分:2)
这取决于你学习它们的动机。如果您主要希望在不久的将来提升您的简历并对企业产生吸引力,那么(至少目前)还有更多的应用程序用Swing编写,而不是JavaFX,纯粹是因为后者是一个更新的工具包。
但是,如果您考虑更长远或者只是想要最好的工具,我个人觉得JavaFX可以提供更大的灵活性,更容易以美观的方式编写代码,也更容易学习(它背后的API更好。)目前唯一反对它的是,我真的希望包含一些功能,but aren't yet(再次,这自然是你得到的较新的工具包。)
我也建议不要混淆两者。我目前参与了两个使用JavaFX的项目,一个完全基于JavaFX,另一个是FX和swing的混合。后者维护得更加繁琐,主要是因为调度线程的差异。
答案 2 :(得分:2)
如前一张海报所述,您现在可以在Swing应用程序中使用JavaFX。但是,由于Oracle已经宣布JavaFX是Java桌面的未来,为什么不学习它。我试图保持两者的最新状态,这是一件苦差事。我计划在未来专注于JavaFX - 减少混淆自己的可能性。
也就是说,JavaFX似乎仍然不是JDK的成熟成员,特别是如果与其他语言一起使用,例如Clojure。根据JavaFX版本的不同,可以通过不同的方法将其拉入构建工具中。但每次发布时情况都会好转。