将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,一经查实,立即删除!

相关文章

iOS-如何返回某个字符串的拼音助记码

我也是看了网上的一个示例代码后,在它的基础上进行的修改。因为项目上会用到,我相信很多人的项目上也会用到。所以实现后,也赶紧分享出来,希望后来人不需要花费时间了。 提示:这里用到了正则表达式,使用了一…

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

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

【Shell剧本练习】得出的结论是当前用户

推断是否当前用户root。假设是暗示root用户,假设而不是提示对于普通用户#!/bin/bash #title: testus.sh #author: orangleliu #date: 2014-08-09 #desc: get current user, if it is root user, tell us it is super user or tell us is a common user# #Function C…

播放框架模块:分而治之

通常情况是您开始开发应用程序并继续满足要求。 当您的应用程序变得更大时,您开始意识到将其分为不同组件的便利。 而且,当您开发第二个或第三个应用程序时,您开始认识到可以在不同应用程序之间重用的某些功能。 这是模块化应用程序的两个很好…

Alpha阶段项目总结

1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件是一款针对健康饮食而做的一款饮食健康软件,对生活中我们经常迟到的很多事物组合都进行了详细的注解,用户可以清楚地看…

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

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

九度oj-1001-Java

题目描述: This time, you are supposed to find AB where A and B are two matrices, and then count the number of zero rows and columns. 输入: The input consists of several test cases, each starts with a pair of positive integers M and N …

字节流与字符流的区别

最近在项目中遇到一个encoding的问题,记录一下。 具体而言就是,项目中有A/B两个部分,A部分由我们负责,Java实现;B部分是UK负责的,使用Delphi,A、B在交互时发送一个http请求, 请求汇总…

通过MOXy实现使JAXB更加清洁

编组和解组XML时使用JAXB的主要优点是编程模型。 只需注释几个POJO并使用JAXB API,您就可以很容易地序列化为XML和从XML反序列化。 您无需担心有关XML如何编组/解组的细节。 一切都比DOM和SAX等替代方案简单得多。 现在,XML文件中的数据本质上趋于分层。…

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

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

697. 数组的度

给定一个非空且只包含非负数的整数数组 nums,数组的 度 的定义是指数组里任一元素出现频数的最大值。 你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。 来源:力扣(LeetCode) 链接&a…

python math模块

1.math简介 >>> import math >>>dir(math) #这句可查看所有函数名列表 [__doc__, __name__, __package__, acos, acosh, asin, asinh, atan, atan2, atanh, ceil, copysign, cos, cosh, degrees, e, erf, erfc, exp, expm1, fabs, factorial, flo…

Visual Studio找不到adb.exe错误解决

Visual Studio找不到adb.exe错误解决 错误信息:Cannot find adb.exe in specified SDK path。出现这种情况,是因为没有安装Android SDK Platform-tools。解决办法:在SDK Manager中,安装该组件即可。 转载于:https://www.cnblogs.c…

Vaadin应用程序中的EJB查找

自从我实现上一个服务定位器以来已经有很长时间了。 我认为不再需要考虑Java EE CDI (上下文和依赖注入)的成熟度。 我的第一个实现是在基于Struts的Web应用程序中使用EJB。 之后,我开始使用JSF,它只需要带有EJB或Resource的带注释…

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

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

团队项目记录2

遇到的问题:在对Trigger机关进行测试时发现,画出的轨道也会将机关触发。 问题描述:Trigger机关的作用是在发生碰撞时运行脚本中指定的特定物体的特定函数,在这个例子当中特定的物体是一块地板,特定的函数的功能是删除这…

关于java.lang.ArithmeticException

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

1103. Integer Factorization (30)

题目如下: The K-P factorization of a positive integer N is to write N as the sum of the P-th power of K positive integers. You are supposed to write a program to find the K-P factorization of N for any positive integers N, K and P. Input Specifi…

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

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

DOM 基础 HTML标签 元素 属性

什么是HTML标签 HTML标签标记了HTML文档和HTML元素 HTML标签由开始标签和结束标签组成.开始标签为尖括号包围的元素名,结束标签为尖括号包围的斜杠和元素名 例如:<h2> My First Heading</h2> HTML基本标签 标题(Heading)是通过h1 - h6等标签进行定义的.段落 是通过…