asp.net企业网站模板,窝窝在线观看,wordpress仪表盘关闭,在网上做国际快递淘宝网站javafx 和swing我刚刚完成了对使用Swing的应用程序组件的重写#xff0c;现在正在使用JavaFX#xff0c;最后得到了与更大的swing应用程序集成的JavaFX组件。 这是一个很大的应用程序#xff0c;重写花了我一段时间#xff0c;最后一切都很好#xff0c;我很高兴自己做到了… javafx 和swing 我刚刚完成了对使用Swing的应用程序组件的重写现在正在使用JavaFX最后得到了与更大的swing应用程序集成的JavaFX组件。 这是一个很大的应用程序重写花了我一段时间最后一切都很好我很高兴自己做到了。 您可能想在秋千应用中执行此操作的原因 您可能想要重写Swing应用程序并将其更改为使用JavaFX最简单的方法是通过一次更改每个组件来增量执行此操作。 这要求您将每个新更改的JavaFX组件与其余的Swing应用程序集成在一起。 我将总结为什么您可能要开始将应用程序从Swing重写为JavaFX 这是未来 从某种意义上讲Swing几乎已经死了因为它不会得到任何进一步的发展。 JavaFX是Java的新UI工具包它为将来提供了更好的准备例如触摸支持3D内置动画支持视频和音频播放等。 未来可能对移动设备的支持AndroidIOS… 已经有一个可以使用的原型使您可以将javafx应用程序移植到名为RoboVM的IOS – http://www.robovm.org/ 。 随着越来越多的JavaFX开源更好的RoboVM将会变得更好通过这种开源可能会出现其他实用程序这些实用程序将允许移植到其他环境。 牢固 JavaFX是一个经过精心设计的工具包具有快速增长的步伐光明的未来和一系列良好的免费UI工具。 此外与过去不同Oracle给予开发人员反馈非常重要的意义即更改和调整其API以实现其目标。 好漂亮啊 与Swing不同不算第三方库本身就很丑陋JavaFX从一开始就看起来不错尤其是JavaFX 8的新Modena外观 http : //fxexperience.com/2013/03/modena-theme-update / -。 鉴于当今用户期望外观好设计良好的应用程序这是一个很好的观点。 不错的附加功能 一些不错的功能例如图表API支持HTML5的嵌入式浏览器等。 你怎么做 回到JavaFX 1.3您可以将Swing嵌入JavaFX但不能反之至少不是正式的。 我实现了一个Swing组件该组件允许您将JavaFX内容嵌入到Swing中称为JXScene并将其在jfxtras项目中公开可用。 这是将JavaFX场景嵌入Swing应用程序的唯一方法。 现在带有JavaFX 2.X的Oracle成为在Swing中嵌入JavaFX的官方方法这更有意义但不幸的是这不是在JavaFX中嵌入Swing的方法我想这在大多数情况下就足够了。 但是随着即将到来的JavaFX 8您还可以将Swing组件与Swing节点一起嵌入到JavaFX应用程序中。 建筑学 本质上当您在Swing中嵌入JavaFX时最终会有2个正在运行的UI线程Swing EDT线程和JavaFX User线程。 将来有可能像SWT那样只有两个线程这使得Swing在JavaFX User Thread上运行但是现在我们必须使用2个线程来管理方式。 在UI中同时运行的两个线程使问题变得复杂并且使JavaFX集成不像您预期的那样容易除非您正在做一些琐碎的小型应用程序但我想这不是大多数现实世界中的场景。用例。 如果您正在做一个小型应用程序那么最好在JavaFX中完成所有操作。 编码 JavaFX提供了JFXPanel它是一个承载JavaFX场景的Swing面板。 您可以在JFXPanel上设置场景然后在可以添加Swing组件的位置添加面板。 要访问JavaFX数据您必须将代码包装在Runnable对象中并调用Platform.runLater方法 jbutton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Platform.runLater(new Runnable() { Overridepublic void run() {fxlabel.setText(Swing button clicked!); }});}
}); 另一方面是Swing数据。 该数据只能由EDT访问。 为了确保您的代码在EDT上运行请将其包装到Runnable对象中并调用SwingUtilities.invokeLater : SwingUtilities.invokeLater(new Runnable() {Overridepublic void run() {//Code to change Swing data.}
});提示 当您在JavaFX用户线程之外访问JavaFX资源时JavaFX已经引发了异常但是请记住这种情况并不总是会发生。 为了最大程度地降低性能成本并未检查所有情况。 如果您使用Substance 我认为毫无疑问Swing具有最佳外观的自由外观那么只要在EDT外部访问Swing资源也会抛出异常。 将Substance设置为Swing的外观可能是减少Swing方面并发错误的好方法。 在2个UI线程之间共享资源时要非常小心请尝试尽可能避免这种情况。 解决多线程问题的最佳方法是避免它们而这些问题是软件工程中最难解决的问题。 Swing最初是从多线程工具包开始而最终更改为单线程工具包这是有原因的。 有时您可能想通过Platform.isFxApplicationThread()检查您是否在JavaFX用户线程上而只发出对Platform.runLater(…)的调用因为如果您在JavaFX用户线程上并调用runLater(...)内部代码的执行仍将推迟到以后这可能不是您想要的。 有很多JavaFX控件可以覆盖它们的摆动控件但是它们是不同的并且具有必须适应的不同功能。 还有一些控件例如JFormattedTextField尚不存在。 总之JavaFX与Swing不同。 您必须适应不同的控件以及不同的Arquitecture和API。 其他要签出的链接 Oracle教程 http //docs.oracle.com/javafx/2/swing/jfxpub-swing.htm 参考 Pixel Duke博客上来自JCG合作伙伴 Pedro Duque Vieira的JavaFX和Swing集成修订 。 翻译自: https://www.javacodegeeks.com/2013/07/integrating-javafx-and-swing-revised.htmljavafx 和swing