将JavaFX 2.0与Swing和SWT集成
JFXPanel
和FXCanvas
允许在其实例上设置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集成相关推荐
- 在Swing和Swt中使用JavaFX
转载自 在Swing和Swt中使用JavaFX 本人从08年12月份,JavaFX发布第一个版本开始关注它的发展. 算算到现在,也差不多是第五个年头了.期间经历了一些动荡,但JavaFX还是坚持着发 ...
- 在JavaFX程序中嵌入Swing内容
转载自 在JavaFX程序中嵌入Swing内容 本教程描述如何在JavaFX应用程序中嵌入Swing组件.本文将讨论线程限制并提供一个可运行的应用程序来说明在JavaFX应用程序中嵌入带HTML内容 ...
- JavaFX 2.0和Scala,例如牛奶和饼干
JavaFX 2.0和Scala都是很好的技术,但是一起使用时效果会更好. JavaFX 2.0是一种功能强大的富客户端技术,具有先进的图形,动画和媒体功能. Scala是一种简单但功能强大的语言,具 ...
- 纯Java JavaFX 2.0菜单
在有关JavaFX的最新文章中 ,我集中讨论了不使用JavaFX 1.x的JavaFXScript和不使用JavaFX 2.0的新FXML来使用JavaFX 2.0的新Java API . 所有这些示 ...
- JavaFX 2.0布局窗格– GridPane
毫无疑问, GridPane是JavaFX 2.0中功能最强大,最灵活的布局窗格. 它在由行和列组成的灵活网格中布置其子项,与Swing的GridBagLayout或HTML的表格模型非常相似. 这种 ...
- JavaFX 2.0 Hello World
在讨论示例本身之前,我想向您展示如何在NetBeans中创建JavaFX应用程序. (如果尚未安装JavaFX和NetBeans,请参阅我以前的文章< 安装JavaFX 2.0和NetBeans ...
- JavaFX 2.0和Scala,像牛奶和饼干
JavaFX 2.0和Scala都是很好的技术,但是一起使用时效果会更好. JavaFX 2.0是一种功能强大的富客户端技术,具有先进的图形,动画和媒体功能. Scala是一种简单但功能强大的语言,具 ...
- JavaFX 2.0布局窗格– BorderPane
BorderPane非常适合开发更复杂的布局. 通常, BorderPane提供五个不同的区域:顶部,右侧,底部,左侧和中央. 您可以通过调用setTop/setBottom/set-方法将Node设 ...
- JavaFX 2.0布局窗格– FlowPane和TilePane
FlowPanes和TilePanes是不错的布局窗格,如果您想一个接一个地连续地水平或垂直地布局子级,则可以. 它们彼此非常相似,因为它们都将子级布置成列(在水平Flow / TilePane的情况 ...
最新文章
- 《企业软件交付:敏捷与高效管理精要》——3.8 结论
- java按位取反“~“运算符,负数右移
- 带有Swagger的Spring Rest API –集成和配置
- OpenStack管理界面开源啦!
- java 判断日期连续_如何在Java中检查日期是否大于另一个日期?[重复]
- python—scipy.stats.multivariate_normal
- 在metasploitable里面搭建ZVulDrill
- 流程控制示例:---3个实例示例:
- IEC63174电动牙刷性能检测仪器分享
- 鸿蒙第三代手机,华为第三代折叠屏手机面市 余承东披露今年4月旗舰机启用鸿蒙系统...
- SQL2008用户sa登录失败(错误18456)解决方法
- 平头哥CH2601开发环境(CDK)搭建
- Git 笔记 - 程序员都要掌握的 Git
- 一个国企老兵给后辈们的忠告:三十岁之前远离国企
- SAS,软件使用中reg报错/gplot错误的解决方法。
- 面试官:这波HTTP究极combo,你顶得住吗?
- Spark数据倾斜解决方案(收藏级)
- 用java实现螺旋矩阵算法
- python关于类的通俗描述?
- 视频下载神器you-get使用方法
热门文章
- posman mocks_使用Mocks进行需求驱动的软件开发
- groovy lambda_Java Lambda流和Groovy Clouse的比较
- vmware用户名和密码_VMWare vijava –“用户名或密码不正确”异常的奇怪情况
- spring @lazy_Spring @Lazy批注用例
- 结果集 tostring_关于避免对toString()结果进行解析或基于逻辑的美德
- maven java1.7_本周Java技巧#7 – Maven慢吗?
- wildfly_从WildFly 9(子系统)中运行OkHttpClient
- 性能测试流程_流性能
- unity创建和销毁对象_如何创建和销毁对象
- amqp rabbitmq_通过Spring Integration和RabbitMQ获得高可用性的AMQP支持的消息通道