javafx內嵌為Swing程式淺析
javafx 嵌入swing當中:
關鍵類:JFXPanel
主要問題正確處理javafx執行緒與Swing EDT執行緒的關係、
對於EDT需要使用SwingUtilities.invokeLater()
對於javafx scene的構建需要使用Platform.runLater()
而JFXPanel則是javafx與Swing互動的唯一途徑,JFXPanel以Scene作為頂級容器,而JFXPanel在Swing中就是一個普通的Panel。
public class Test {
private static void initAndShowGUI() {
// This method is invoked on the EDT thread
JFrame frame = new JFrame("Swing and JavaFX");
final JFXPanel fxPanel = new JFXPanel();
frame.add(fxPanel);
frame.setSize(300, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Platform.runLater(new Runnable() {
@Override
public void run() {
initFX(fxPanel);
}
});
}
private static void initFX(JFXPanel fxPanel) {
// This method is invoked on the JavaFX thread
Scene scene = createScene();
fxPanel.setScene(scene);
}
private static Scene createScene() {
Group root = new Group();
Scene scene = new Scene(root, Color.ALICEBLUE);
Text text = new Text();
text.setX(40);
text.setY(100);
text.setFont(new Font(25));
text.setText("Welcome JavaFX!");
root.getChildren().add(text);
return (scene);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
initAndShowGUI();
}
});
}
}
關鍵類:JFXPanel
主要問題正確處理javafx執行緒與Swing EDT執行緒的關係、
對於EDT需要使用SwingUtilities.invokeLater()
對於javafx scene的構建需要使用Platform.runLater()
而JFXPanel則是javafx與Swing互動的唯一途徑,JFXPanel以Scene作為頂級容器,而JFXPanel在Swing中就是一個普通的Panel。
public class Test {
private static void initAndShowGUI() {
// This method is invoked on the EDT thread
JFrame frame = new JFrame("Swing and JavaFX");
final JFXPanel fxPanel = new JFXPanel();
frame.add(fxPanel);
frame.setSize(300, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Platform.runLater(new Runnable() {
@Override
public void run() {
initFX(fxPanel);
}
});
}
private static void initFX(JFXPanel fxPanel) {
// This method is invoked on the JavaFX thread
Scene scene = createScene();
fxPanel.setScene(scene);
}
private static Scene createScene() {
Group root = new Group();
Scene scene = new Scene(root, Color.ALICEBLUE);
Text text = new Text();
text.setX(40);
text.setY(100);
text.setFont(new Font(25));
text.setText("Welcome JavaFX!");
root.getChildren().add(text);
return (scene);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
initAndShowGUI();
}
});
}
}
相關文章
- 在JavaFX程式中嵌入Swing內容Java
- javafx 和swing_整合JavaFX和SwingJava
- 整合JavaFX和SwingJava
- 淺談小程式內嵌網頁及內嵌網頁跳轉分享實現網頁
- 利用JavaFX功能豐富Swing應用程式Java
- java程式通過swing呼叫javaFx更新 資料Java
- 在Swing和Swt中使用JavaFXJava
- 打算學GUI程式設計,SWING,javaFx,SWT怎麼選?GUI程式設計Java
- javafx和swing巢狀使用的方法Java巢狀
- 小程式內嵌h5H5
- Java的Swing應用中使用JavaFX的功能Java
- 淺析小程式外掛
- Runtime原始碼淺析(內部分享)原始碼
- 淺析Java語言中的內部類Java
- 借JavaFX之風,Swing終於熬到了出頭之日Java
- SpringMVC使用Jetty作為內嵌伺服器SpringMVCJetty伺服器
- 攜程小程式內嵌webview實踐指南WebView
- 支付寶小程式框架淺析及如何在 mPaaS 內深度整合框架
- 淺析方法控制程式碼
- 淺析“程式碼視覺化”視覺化
- Linux 程式排程淺析Linux
- Linux 程式狀態淺析Linux
- Nginx 內嵌變數Nginx變數
- 淺析行內元素視覺格式化視覺
- 09. C語言內嵌彙編程式碼C語言
- 淺析 Node 程式與執行緒執行緒
- 容器中Java 程式OOMKilled原因淺析JavaOOM
- Julia1.0程式語言淺析
- C程式編譯過程淺析C程式編譯
- 淺析面向協議程式設計協議程式設計
- tinyhttp伺服器程式碼淺析HTTP伺服器
- Android內容服務ContentService原理淺析Android
- 淺析製造業內網安全解決之道內網
- iOS Block淺淺析iOSBloC
- MongoDB查詢內嵌文件MongoDB
- 淺析 JWTJWT
- MongoDB淺析MongoDB
- RunLoop 淺析OOP