// 繼承javax.swing.JFrame類別 public class JavaSwingDemo extends javax.swing.JFrame { // 主程式 public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new JavaSwingDemo(); } }); } // 建構函式 public JavaSwingDemo() { // 建立JavaFX Panel final JFXPanel jfxPanel = new JFXPanel(); Platform.runLater(new Runnable() { @Override public void run() { // 建立JavaFX Panel initFX(jfxPanel); } }); // 將JavaFX Panel加入JFrame之中 this.add(jfxPanel); // 設定JFrame的大小 this.setSize(300, 300); // 顯示JFrame this.setVisible(true); } private static void initFX(JFXPanel jfxPanel) { // 配置JavaFX Panel中的物件 } } |
其中以JFXPanel類別建立JavaFX Panel之後,需以javafx.application.Platform類別的runLater()方法以執行緒執行JavaFX Panel,如此方能在Java Swing中正常處理JavaFX:
// 建立JavaFX Panel final JFXPanel jfxPanel = new JFXPanel(); Platform.runLater(new Runnable() { @Override public void run() { // 建立JavaFX Panel initFX(jfxPanel); } }); |
接著可使用JavaFX Panel配置JavaFX物件。以下範例示範在以Java Swing中以JFXPanel類別建立JavaFX Panel並配置JavaFX物件,其中以Accordion類別群組數個TitledPane類別,並在TitledPane中置放圖片:
【參考資料】
[1] 黃嘉輝,深入研究JavaFX 2。
[2] 黃嘉輝,深入研究Java Swing。
[3] Java Official Web Site:http://www.oracle.com/technetwork/java/index.html
[5] JavaFX 2.2 API Specification.
[6] Java Platform, Standard Edition 7 API Specification.
© Chia-Hui Huang
沒有留言:
張貼留言