質問

JavaFX Scriptを使用できるのと同じ程度に、新しいJavaFX APIによって提供される新しい機能をJavaから直接利用できますか?

基礎となるすべてのJavaFX APIは、純粋にJavaまたはJavaFX Script、あるいはそれらの組み合わせですか?

役に立ちましたか?

解決

JavaFX APIは、JavaFXとJavaが混在しています。 SDKには、APIの一部を含むアーカイブsrc.zipが付属しています(最も基本的なクラスのみが含まれていますが、javafx.sceneなどが欠落しています)。

JavaからJavaFXコードを呼び出すことは、JavaFX 1.x AFAIKでは公式にサポートされていません。 JavaFXブログ内のブログエントリがあり、サポートされていない方法でそれを行う方法を示します。 API、しかしそれは複雑であり、将来のバージョンではこの方法で動作しません。

JavaからJavaFXを使用するには、サポートされている2つの方法があります。 この記事に示すように、Scripting APIを使用してJavaFXコードを呼び出します。 a>。または、最もエレガントなソリューションである私見では、JavaFXを使用してAPIアクセスコードを記述し、Javaインターフェイスを定義してプレーンJavaのJavaFXコードとやり取りし、それらのインターフェイスをJavaFXに実装します。

他のヒント

JavaFXでマルチメディアコンポーネントを使用して、ある程度の成功を収めることができました。この方法では完全にサポートされておらず、com.sunパッケージがJavaSEにある方法と同様に変更される可能性があります。

これらをSwing UIに統合し、Javaから直接FXで実行できるMMの処理を実行できました。

すぐにコアライブラリにその一部を追加してください。

JavaFXで使用されるシーングラフはオープンソースです。ここで確認できます( https://scenegraph.dev.java.net )。 JavaFX 1.xに付属する最終バージョンを反映するようにサイトは更新されていませんが、JavaFX SDKに付属のjarを使用して、Swingアプリケーション内でシーングラフとスイングノードを混在させることができます。ただし、このバージョンのシーングラフには公式のAPIがないため、多少の困難が生じます。

これは「こんにちは世界」です。 JavaFX 1.0に付属するシーングラフを使用します。 " 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;



}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top