将JavaFX 2.0与Swing和SWT集成

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/374497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wifi rssi 计算 距离_WiFi和WLAN是一样的?真相在这里~别再傻傻分不清了

我们通常上网的时候会说连接WiFi如果注意到无线网络的名称就会发现手机的连接显示是WLAN别再将WiFI和WLAN搞混了!二者的定义WLANWLAN的全称为 Wireless Local Area Networks,中文意思为无线局域网络,是一种数据传输系统。它是利用射频技术进行数据传输&a…

实用的it知识学习_怎样能更快更好的学习好书法?分享一些比较实用的理论知识...

如何能更快更高效的学习书法?首先了解一些书法理论知识是很有必要的!它能让你在学习书法的过程中不至于迷茫 !能助你更快学好书法!一、书论在实践中产生我们大部分人都觉得学习书法可以没有理论,但不可无技法。但理论和…

android 上下滚动文字_计算机毕设项目004之Android系统在线小说阅读器

计算机毕设项目004之Android系统在线小说阅读器一. 项目名称基于Android系统的在线小说阅读器二. 项目简介项目中的角色功能:支持翻页动画:仿真翻页、覆盖翻页、上下滚动翻页等翻页效果。支持页面定制:亮度调节、背景调节、字体大小调节支持全屏模式(含有虚拟按键的…

基线检查工具_最新版CAD燕秀工具箱2.87(支持20042021)

好课推荐:零基础CAD:点我CAD家装:点我 周站长CAD:点我CAD机械:点我revit教程:点我CAD建筑:点我CAD三维:点我全屋定制:点我 ps教程:点我苹果版CAD:点我 3dmax教…

关于java.lang.ArithmeticException

java.lang.ArithmeticException “数学运算异常”,可能是自己的数学运算公式出现了错误、违反了数学运算规则。错误记录: 出错原因: a % b 中b不能为0

Java EE 6与Spring Framework:技术决策过程

在过去的几个月中,我们经历了这个决策过程:为Java平台上的企业开发选择哪种技术堆栈? 有多种选择。 但是,我们深入讨论的是:纯Java EE 6堆栈与带有Java EE的Spring。 以下博客文章总结了当您考虑这些技术堆栈选项之一时…

允许服务与桌面交互_vivo 正式推出 Origin OS,融合自然设计与全新交互

点击右上角关注我们,每天给您带来最新最潮的科技资讯,让您足不出户也知道科技圈大事!今天下午,vivo 推出了全新 Origin OS 手机系统。它采用了源于自然界的设计理念,同时加入了全新并且允许用户进行深度自定义的交互方…

dll 源码_【技术分享】 | 一个JAVA内存马的源码分析

前言偶然接触到了这样一个JAVA内存马,其作者也是冰蝎的作者,项目地址:https://github.com/rebeyond/memShell正好最近在接触JAVA,借此机会学习下大佬的代码,对自己的编程思路也有了一定的提升。当然笔者只是一个脚本小…

ThunderSearch(闪电搜索器)_网络空间搜索引擎工具_信息收集

文章目录 ThunderSearch简介1 项目地址2 使用方式2.1 配置文件config.json说明2.2 构建和运行 3 使用式例 ThunderSearch简介 ThunderSearch(闪电搜索器)是一款使用多个(【支持Fofa、Shodan、Hunter、Zoomeye、360Quake网络空间搜索引擎】网络空间搜索引…

每个人都知道MVC…

从一个最近的博客中,您可能已经了解到我最近一直在进行一些采访,因为他们是针对Web应用程序开发人员的,所以我问的一个问题是“您能解释一下MVC模式是什么吗?”,值得称赞的是,每个候选人知道答案。 对于不认…

r语言ggplot2 多线图绘制图例_plotnine: Python版的ggplot2作图库

腾讯课堂 | Python网络爬虫与文本数据分析同样的基本作图任务,plotnine比matplotlib和seaborn代码量少,更美观。所以我又重新发一遍,大家可以先收藏起来,后面总有用到的时候~R语言的ggplot2绘图能力超强,python虽有mat…

单元和集成测试的代码覆盖率

我最近在一个宠物项目中着手构建自动化的UI(集成)测试以及普通的单元测试。 我想将所有这些集成到我的Maven构建中,并提供代码覆盖率报告,以便我可以了解测试覆盖率不足的区域。 我不仅发布了项目的源代码,还整理了一个…

python学生分布_Python数据分析实战之分布分析

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者:严小样儿 分布分析法,一般是根据分析目的,将数据进行分组,研究各组别分布规律的一种分析方法。…

hls fifo_HLS优化方法DATAFLOW你用了吗

上期内容:异步跨时钟域电路该怎么约束DATAFLOW作为HLS的一种优化方法,对于改善吞吐率(Throughput)、降低延迟(Latency)非常有效。DATAFLOW的作用对象DATAFLOW可以作用于函数,也可以作用于for循环。如下图所示(图片来源Figure62, Figure 63, u…

在Hibernate,EhCache,Quartz,DBCP和Spring中启用JMX

继续使用JMX的过程(请参阅: 人类JMX ),我们将学习如何在一些流行的框架中启用JMX支持(通常是统计和监视功能)。 这些信息大部分都可以在项目的主页上找到,但是我决定在收集这些信息的同时&#…

400多万微信用户如何“变现”?凯叔说了五大秘诀与教训

凯叔,原名王凯,自媒体“凯叔讲故事”创始人,近日在狮享家班委会上做了分享,全是实实在在的实验性方法论。以下是王凯的分享内容,整理 / 垅青 我讲的主题叫“基于内容的MVP探索”,MVP是什么东西?…

使用模拟的单元测试–测试技术5

我的最后一个博客是有关测试代码方法的一系列博客中的第四篇,演示了如何创建使用存根对象隔离测试对象的单元测试。 今天的博客探讨了有时被视为对立的技术:使用模拟对象进行单元测试。 同样,我使用了从数据库检索地址的简单方案:…

多线程中的volatile和伪共享

伪共享 false sharing,顾名思义,“伪共享”就是“其实不是共享”。那什么是“共享”?多CPU同时访问同一块内存区域就是“共享”,就会产生冲突,需要控制协议来协调访问。会引起“共享”的最小内存区域大小就是一个cache…

C语言代码规范(一)缩进与换行

一、缩进的空格数为4个。最好配置代码编辑器将TAB键设置为空格替换&#xff0c;避免出现另一个编辑器打开时格式变乱的情况。 例如Notepad设置 KEIL设置 二、“{” 和 “}”各自独占一行。 不规范例子&#xff1a; for(i 0; i < student_num; i) { if((score[i] > 0…

armv7 cortex a系列编程手册_AWTK能为现代GUI编程带来何种改变?

AWTK是一个伸缩性极强的嵌入式图形框架&#xff0c;它的诞生会给GUI编程研发工程师带来哪些改变&#xff1f;AWTK是一个伸缩性极强的嵌入式图形框架&#xff0c;可在Cortex-M3这样低端的单片机上运行&#xff0c;也可以在Cortex-A7/A8/A9等处理器&#xff0c;甚至DSP以及X86处理…