Java的Swing應用中使用JavaFX的功能

混魔MJM發表於2017-08-18

JavaFX包含了許多強大的功能,它們都是Java SE不具備的,如圖表Charting,動畫,媒體播放,RSS/Atom等,於是程式設計師常常討論如何在Java中呼叫JavaFX的功能。筆者文章純Java程式碼呼叫JavaFX的功能JavaFX和Java之間的互操作性對此作過專題討論。在Stephen Chin的開源專案JFXtras最新版本中, 提供了一個JavaFX的封裝類,可以在SWING應用中顯示JavaFX的圖性元素(動畫,圖表等)。這是個十分有用的功能,對廣大的Java(Swing)開發人員來說是個好訊息。JFXtras的原始碼中包含了相關的演示程式(SceneToJComponentScene.fx和 SceneToJComponentTest.java)。我把這個程式修改了一下,以便說明問題。

 




在上面程式碼MyScene.fx中, 我們定義了一個Timeline例項來播放動畫,在動畫中,我們不斷的使一行文字在視窗中旋轉。每隔70毫秒,都會觸發一次旋轉角度的變化(每次5度)。為了演示在JavaFX和Java中互動資料,我們在每次更新時,從Java的靜態變數中獲取資料,具體程式碼如下:





本"JavaFX for SWING"在視窗中央旋轉。如果你在輸入框中輸入新的句子,你會發現旋轉的文字也發生了改變。你可以點選以下截圖來啟動一個Java Web Start的演示程式(JDK1.5以上),或者可以點選這裡來觀看演示的視訊(需要有Windows Media Player)。




討論


1) 在上述程式中,我們用JavaFX的程式碼去輪詢Java的變數值,實際中這會損失比較多的效能,所以我們可以從Java程式碼中主動把資料變化通知JavaFX。這需要一種從Java呼叫javafx的技巧,可以參見本人文章:用Java程式碼呼叫JavaFX的功能 (http://www.javafxblogs.com/java-call-javafx-code/).


2) 在Swing程式中呼叫JavaFX是可行的,那麼應該怎樣編譯和執行這樣的程式呢。其實,JavaFX的功能也就是一些jar檔案,因此和Java的結合方式還是比較簡單的。編譯的方法主要有兩種,一種就是用JavaFX 的編譯器javafxc來編譯Java和JavaFX的程式碼。第二種就是用javafxc編譯JavaFX程式碼,用javac編譯java程式碼。執行程式的時候,我們可以選擇javafx或java命令即可,可以參見本人文章:JavaFX技巧:純Java程式碼呼叫JavaFX的例子的詳細說明。



文章轉自: http://javafxguy.iteye.com  作者:JavaFXGuy

相關文章