我是否可以直接從Java中使用新的JavaFX API提供的新功能,就像我能夠使用JavaFX Script一樣?JavaFX和Java的互操作性
所有底層的JavaFX API純粹是Java還是JavaFX Script或混合?
我是否可以直接從Java中使用新的JavaFX API提供的新功能,就像我能夠使用JavaFX Script一樣?JavaFX和Java的互操作性
所有底層的JavaFX API純粹是Java還是JavaFX Script或混合?
JavaFX API是JavaFX和Java的混合。 SDK附帶一個存檔src.zip,其中包含部分API(僅包含最基本的類,但缺少javafx.scene等內容)。
在JavaFX 1.x AFAIK中不正式支持從Java調用JavaFX代碼。有一個blog entry in the JavaFX blog,告訴你如何使用不受支持的API來做它,但它很複雜,並且在將來的版本中不會以這種方式工作。
Java有兩種支持方式來使用JavaFX。您可以使用Scripting API來調用JavaFX代碼,如this article中所示。或者,這是最優雅的解決方案,使用JavaFX編寫訪問API的代碼,定義Java接口以與來自普通Java的JavaFX代碼交互,然後在JavaFX中實現這些接口。
我們能夠在JavaFX上使用多媒體組件,取得了一些成功。他們完全不支持這種方式,並且可能會改變,類似於JavaSE中的com.sun包。
我們將它們整合到一個Swing UI中,並能夠通過Java直接從FX完成MM可以做的事情。
希望他們很快將這些內容放入核心庫。
JavaFX中使用的場景圖是開源的。你可以在這裏檢查(https://scenegraph.dev.java.net)。雖然網站尚未更新以反映JavaFX 1.x附帶的最終版本,但您仍然可以使用JavaFX SDK附帶的jar,並在swing應用程序中混合使用scenegraph和swing節點。不過,你會遇到一些困難,因爲這個版本的場景圖沒有官方的API。
下面是使用JavaFX 1.0創建的場景圖的「hello world」。請記住在構建路徑中包含「Scenario.jar」。
import java.awt.Color;
import java.awt.Paint;
import java.awt.geom.Point2D;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import com.sun.scenario.scenegraph.JSGPanel;
import com.sun.scenario.scenegraph.SGGroup;
import com.sun.scenario.scenegraph.fx.FXText;
public class HelloWorldScenario101 implements Runnable {
/**
* @param args
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new HelloWorldScenario101());
}
public HelloWorldScenario101() {
//
}
@Override
public void run() {
this.frame = new JFrame();
this.panel = new JSGPanel();
this.text = new FXText();
this.paint = new Color(255, 0, 0, 255);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Hello World");
frame.add(this.panel);
frame.setContentPane(this.panel);
scene = new SGGroup();
this.text.setText("Hello World");
this.text.setFillPaint(this.paint);
this.text.setLocation(new Point2D.Float(10, 10));
this.scene.add(this.text);
this.panel.setScene(scene);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
private JFrame frame;
private JSGPanel panel;
private SGGroup scene;
private FXText text;
private Paint paint;
}
與http://stackoverflow.com/questions/359683/javafx-and-java類似。 – 2009-04-01 20:25:50