Swing程序中調(diào)用JavaFX代碼
當(dāng)我們完成了MyScene類后,可以開始寫Java的主程序了,這是個標(biāo)準(zhǔn)的Swing程序中調(diào)用JavaFX代碼如下:
- package swingtest;
- /**
- * JavaFXToSwingTest.java http://www.javafxblogs.com
- * @author Henry Zhang
- */
- import java.awt.*;
- import javax.swing.*;
- import org.jfxtras.scene.SceneToJComponent;
- public class JavaFXToSwingTest extends JFrame {
- public static JTextField tf = new JTextField("JavaFX for SWING");
- public JavaFXToSwingTest() {
- setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
- setTitle("JavaFX in SWING Test");
- Container container = getContentPane();
- container.setLayout(new BorderLayout());
- String sceneClass = "swingtest.MyScene";
- JComponent myScene = SceneToJComponent.loadScene(sceneClass);
- JLabel label = new JLabel(" Below is a JavaFX Animation: ");
- container.add(label, BorderLayout.NORTH);
- container.add(myScene, BorderLayout.CENTER);
- JPanel p = new JPanel();
- p.setLayout(new FlowLayout());
- tf.setColumns(28);
- p.add(tf);
- p.add(new JButton("SWING Button"));
- container.add(p, BorderLayout.SOUTH);
- pack();
- }
- public static void main(String args[]) {
- java.awt.EventQueue.invokeLater(
- new Runnable() {
- public void run() {
- new JavaFXToSwingTest().setVisible(true);
- }
- }
- }
- }
對大多數(shù)Java/Swing程序員來說,上述代碼應(yīng)該是很容易理解的。我們通過 BorderLayout和FlowLayout在Swing的窗口(JFrame)中布置了一些圖形控件。有2行代碼是和加載JavaFX的Scene相關(guān)的:
- String sceneClass = "swingtest.MyScene";
- JComponent myScene = SceneToJComponent.loadScene(sceneClass);
其中SceneToJComponent類是從JFXtras項目中來的。它提供了loadScene()的方法,可以把JavaFX的Scene類加載到一個JComponent對象中, 從而可以被Swing程序使用。運行這個程序,你可以看到一行文本”JavaFX for SWING”在窗口中央旋轉(zhuǎn)。如果你在輸入框中輸入新的句子,你會發(fā)現(xiàn)旋轉(zhuǎn)的文字也發(fā)生了改變。
在Swing程序中調(diào)用JavaFX代碼是可行的,那么應(yīng)該怎樣編譯和運行這樣的程序呢。其實,JavaFX的功能也就是一些jar文件,因此和Java的結(jié)合方式還是比較簡單的。編譯的方法主要有兩種,一種就是用JavaFX 的編譯器Javafxc來編譯Java和JavaFX代碼。第二種就是用Javafxc編譯JavaFX代碼,用Javac編譯Java代碼。以上是Swing程序調(diào)用JavaFX代碼,希望對大家有所幫助。
【編輯推薦】