我是否可以直接从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