JavaFX 2.0对JavaFX的改进之一是可以更轻松地与Swing和SWT进行互操作 。 一些在线资源记录了如何完成此操作。 其中包括将JavaFX集成到Swing应用程序和SWT Interop中 。 但是,在有效的类级Javadoc文档的一个很好的示例中,各自的JavaFX类javafx.embed.swing.JFXPanel和javafx.embed.swt.FXCanvas都提供了一个简单的代码示例,说明如何使用该类将JavaFX嵌入到Swing中。或SWT代码。 在本文中,我将基于这些类的Javadoc文档中提供的代码示例来演示JavaFX与Swing和SWT的集成。

JFXPanelFXCanvas允许在其实例上设置JavaFX Scene。 下一个特定于JavaFX的代码示例中显示的方法提供了要在本示例中使用的Scene实例(基于我的Simple JavaFX 2.0 Text Example帖子)。

提供用于集成的JavaFX场景的方法

package dustin.examples;import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.effect.*;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;/*** Simple class intended to be used by two examples of integrating JavaFX with* Swing and with SWT. Provides single method {@code createScene()} to be used* by the classes that are examples of integrating Swing with JavaFX and SWT* with JavaFX.* * @author Dustin*/
public class TextIntegrationSceneCreator
{/*** Provides an instance of Scene with JavaFX text examples.* * @return Instance of Scene with text examples.*/public static Scene createTextScene(){final Group rootGroup = new Group();final Scene scene = new Scene(rootGroup, 800, 400, Color.BEIGE);final Text text1 = new Text(25, 25, "(2007) JavaFX based on F3");text1.setFill(Color.CHOCOLATE);text1.setFont(Font.font(java.awt.Font.SERIF, 25));rootGroup.getChildren().add(text1);final Text text2 = new Text(25, 50, "(2010) JavaFX Script Deprecated");text2.setFill(Color.DARKBLUE);text2.setFont(Font.font(java.awt.Font.SANS_SERIF, 30));rootGroup.getChildren().add(text2);final Text text3 = new Text(25, 75, "(2011) JavaFX to be Open Sourced!");text3.setFill(Color.TEAL);text3.setFont(Font.font(java.awt.Font.MONOSPACED, 35));rootGroup.getChildren().add(text3);final Text text4 = new Text(25, 125, "(2011) JavaFX to be Standardized");text4.setFill(Color.CRIMSON);text4.setFont(Font.font(java.awt.Font.DIALOG, 40));final Effect glow = new Glow(1.0);text4.setEffect(glow);rootGroup.getChildren().add(text4);final Text text5 = new Text(25, 175, "(Now) Time for JavaFX 2.0!");text5.setFill(Color.DARKVIOLET);text5.setFont(Font.font(java.awt.Font.SERIF, FontWeight.EXTRA_BOLD, 45));final Light.Distant light = new Light.Distant();light.setAzimuth(-135.0);final Lighting lighting = new Lighting();lighting.setLight(light);lighting.setSurfaceScale(9.0);text5.setEffect(lighting);rootGroup.getChildren().add(text5);final Text text6 = new Text(25, 225, "JavaFX News at JavaOne!");text6.setFill(Color.DARKGREEN);text6.setBlendMode(BlendMode.COLOR_BURN);text6.setFont(Font.font(java.awt.Font.DIALOG_INPUT, FontWeight.THIN, 45));final Reflection reflection = new Reflection();reflection.setFraction(1.0);text6.setEffect(reflection);rootGroup.getChildren().add(text6);return scene;      }
}

可以通过JavaFX类JFXPanel及其setScene(Scene)方法将JavaFX Scene集成到Swing代码中。 下一个代码清单中对此进行了演示,该清单从上一个代码清单中的方法获取特定的Scene实例。

JavaFX / Swing与JFXPanel的集成

package dustin.examples;import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;/*** Simple class demonstrating interoperability between Swing and JavaFX. This* class is adapted from the example provided in the Javadoc documentation for* {@code javafx.embed.swing.JFXPanel}.*/
public class SwingJavaFxInteroperabilityDemo
{private static void initAndShowGUI(){// This method is invoked on Swing threadfinal JFrame frame = new JFrame("JavaFX / Swing Integrated");final JFXPanel fxPanel = new JFXPanel();frame.add(fxPanel);frame.setVisible(true);Platform.runLater(new Runnable(){@Overridepublic void run(){initFX(fxPanel);}});}private static void initFX(JFXPanel fxPanel){// This method is invoked on JavaFX threadfinal Scene scene = TextIntegrationSceneCreator.createTextScene();fxPanel.setScene(scene);}public static void main(String[] arguments){SwingUtilities.invokeLater(new Runnable(){@Overridepublic void run(){initAndShowGUI();}});}
}

接下来显示运行带有嵌入式JavaFX Scene简单Java Swing应用程序的输出。

可以说,将SWT与JavaFX集成起来更加容易,并且在下一个代码清单中将进行演示。 与Swing集成示例一样,主要方法是调用FXCanvas的setScene(Scene)方法。

JavaFX / SWT与FXCanvas的集成

package dustin.examples;import javafx.embed.swt.FXCanvas;
import javafx.scene.Scene;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;/*** Simple class demonstrating interoperability between SWT and JavaFX. This* class is based on the example provided in the Javadoc documentation for* {@code javafx.embed.swt.FXCanvas}.* * @author Dustin*/
public class SwtJavaFxInteroperabilityDemo
{public static void main(String[] arguments){final Display display = new Display();final Shell shell = new Shell(display);shell.setText("JavaFX / SWT Integration");shell.setLayout(new FillLayout());final FXCanvas canvas = new FXCanvas(shell, SWT.NONE);final Scene scene = TextIntegrationSceneCreator.createTextScene();canvas.setScene(scene);shell.open();while (!shell.isDisposed()){if (!display.readAndDispatch()) display.sleep();}display.dispose();}
}

下一个屏幕快照显示了带有嵌入式JavaFX的简单SWT应用程序的外观。

上面显示的Swing与JavaFX集成以及SWT与JavaFX集成的代码清单仅略微修改自Javadoc类JFXPanel (Swing)和FXCanvas (SWT)的Javadoc文档。 这些类在其文档中提供了这些示例,这很高兴,而且集成变得如此容易也非常好。 有关JavaFX / Swing集成的更详尽介绍,请参阅将JavaFX集成到Swing应用程序中 。

参考:《 实际事件启发》博客中的JCG合作伙伴 Dustin Marx的JavaFX 2.0与Swing和SWT的集成

相关文章 :

  • 从JavaFX 1.3迁移到JavaFX 2.0
  • JavaFX 2.0 beta示例应用程序和思考
  • JavaOne正在重建动力
  • 有时在Java中,一个布局管理器是不够的

翻译自: https://www.javacodegeeks.com/2012/01/integrating-javafx-20-with-swing-and.html

将JavaFX 2.0与Swing和SWT集成相关推荐

  1. 在Swing和Swt中使用JavaFX

    转载自  在Swing和Swt中使用JavaFX 本人从08年12月份,JavaFX发布第一个版本开始关注它的发展. 算算到现在,也差不多是第五个年头了.期间经历了一些动荡,但JavaFX还是坚持着发 ...

  2. 在JavaFX程序中嵌入Swing内容

    转载自  在JavaFX程序中嵌入Swing内容 本教程描述如何在JavaFX应用程序中嵌入Swing组件.本文将讨论线程限制并提供一个可运行的应用程序来说明在JavaFX应用程序中嵌入带HTML内容 ...

  3. JavaFX 2.0和Scala,例如牛奶和饼干

    JavaFX 2.0和Scala都是很好的技术,但是一起使用时效果会更好. JavaFX 2.0是一种功能强大的富客户端技术,具有先进的图形,动画和媒体功能. Scala是一种简单但功能强大的语言,具 ...

  4. 纯Java JavaFX 2.0菜单

    在有关JavaFX的最新文章中 ,我集中讨论了不使用JavaFX 1.x的JavaFXScript和不使用JavaFX 2.0的新FXML来使用JavaFX 2.0的新Java API . 所有这些示 ...

  5. JavaFX 2.0布局窗格– GridPane

    毫无疑问, GridPane是JavaFX 2.0中功能最强大,最灵活的布局窗格. 它在由行和列组成的灵活网格中布置其子项,与Swing的GridBagLayout或HTML的表格模型非常相似. 这种 ...

  6. JavaFX 2.0 Hello World

    在讨论示例本身之前,我想向您展示如何在NetBeans中创建JavaFX应用程序. (如果尚未安装JavaFX和NetBeans,请参阅我以前的文章< 安装JavaFX 2.0和NetBeans ...

  7. JavaFX 2.0和Scala,像牛奶和饼干

    JavaFX 2.0和Scala都是很好的技术,但是一起使用时效果会更好. JavaFX 2.0是一种功能强大的富客户端技术,具有先进的图形,动画和媒体功能. Scala是一种简单但功能强大的语言,具 ...

  8. JavaFX 2.0布局窗格– BorderPane

    BorderPane非常适合开发更复杂的布局. 通常, BorderPane提供五个不同的区域:顶部,右侧,底部,左侧和中央. 您可以通过调用setTop/setBottom/set-方法将Node设 ...

  9. JavaFX 2.0布局窗格– FlowPane和TilePane

    FlowPanes和TilePanes是不错的布局窗格,如果您想一个接一个地连续地水平或垂直地布局子级,则可以. 它们彼此非常相似,因为它们都将子级布置成列(在水平Flow / TilePane的情况 ...

最新文章

  1. 《企业软件交付:敏捷与高效管理精要》——3.8 结论
  2. java按位取反“~“运算符,负数右移
  3. 带有Swagger的Spring Rest API –集成和配置
  4. OpenStack管理界面开源啦!
  5. java 判断日期连续_如何在Java中检查日期是否大于另一个日期?[重复]
  6. python—scipy.stats.multivariate_normal
  7. 在metasploitable里面搭建ZVulDrill
  8. 流程控制示例:---3个实例示例:
  9. IEC63174电动牙刷性能检测仪器分享
  10. 鸿蒙第三代手机,华为第三代折叠屏手机面市 余承东披露今年4月旗舰机启用鸿蒙系统...
  11. SQL2008用户sa登录失败(错误18456)解决方法
  12. 平头哥CH2601开发环境(CDK)搭建
  13. Git 笔记 - 程序员都要掌握的 Git
  14. 一个国企老兵给后辈们的忠告:三十岁之前远离国企
  15. SAS,软件使用中reg报错/gplot错误的解决方法。
  16. 面试官:这波HTTP究极combo,你顶得住吗?
  17. Spark数据倾斜解决方案(收藏级)
  18. 用java实现螺旋矩阵算法
  19. python关于类的通俗描述?
  20. 视频下载神器you-get使用方法

热门文章

  1. posman mocks_使用Mocks进行需求驱动的软件开发
  2. groovy lambda_Java Lambda流和Groovy Clouse的比较
  3. vmware用户名和密码_VMWare vijava –“用户名或密码不正确”异常的奇怪情况
  4. spring @lazy_Spring @Lazy批注用例
  5. 结果集 tostring_关于避免对toString()结果进行解析或基于逻辑的美德
  6. maven java1.7_本周Java技巧#7 – Maven慢吗?
  7. wildfly_从WildFly 9(子系统)中运行OkHttpClient
  8. 性能测试流程_流性能
  9. unity创建和销毁对象_如何创建和销毁对象
  10. amqp rabbitmq_通过Spring Integration和RabbitMQ获得高可用性的AMQP支持的消息通道