將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.pswp.cn/news/374497.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374497.shtml
英文地址,請注明出處:http://en.pswp.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等標簽進行定義的.段落 是通過…