Domanda

Posso utilizzare le nuove funzionalità fornite dalle nuove API JavaFX direttamente da Java nella stessa misura in cui sarei in grado di utilizzare JavaFX Script?

Tutte le API JavaFX sottostanti sono puramente Java o JavaFX Script o un mix?

È stato utile?

Soluzione

Le API JavaFX sono un mix di JavaFX e Java. L'SDK viene fornito con un archivio src.zip che contiene una parte delle API (sono incluse solo le classi più elementari, ma mancano cose come javafx.scene).

La chiamata del codice JavaFX da Java non è ufficialmente supportata in JavaFX 1.x AFAIK. C'è un voce di blog nel blog JavaFX che ti mostra come fare comunque usando non supportato API, ma è complicato e non funzionerà in questo modo nelle versioni future.

Esistono due modi supportati per utilizzare JavaFX da Java. O usi l'API di scripting per invocare il codice JavaFX, come mostrato in questo articolo . Oppure, che è la soluzione più elegante di IMHO, scrivi il codice di accesso alle API usando JavaFX, definisci le interfacce Java per interagire con il tuo codice JavaFX da Java semplice e quindi implementa quelle interfacce in JavaFX.

Altri suggerimenti

Siamo riusciti a utilizzare i componenti multimediali con JavaFX con un certo successo. sono totalmente non supportati in questo modo e soggetti a modifiche simili a come sono i pacchetti com.sun in JavaSE.

Li abbiamo integrati in un'interfaccia utente Swing e siamo stati in grado di fare le cose MM che potevi fare da FX direttamente da Java.

Spero che presto ne inseriscano una parte nelle librerie di base.

Lo scenario utilizzato in JavaFX è opensource. Puoi verificarlo qui ( https://scenegraph.dev.java.net ). Sebbene il sito non sia stato aggiornato per riflettere la versione finale fornita con JavaFX 1.x, è comunque possibile utilizzare il jar fornito con JavaFX SDK e mescolare i nodi scenegraph e swing all'interno dell'applicazione swing. Tuttavia, avrai qualche difficoltà perché non esiste un'API ufficiale per questa versione di scenegraph.

Ecco un "ciao mondo" usando lo scenario che viene fornito con JavaFX 1.0. Ricorda di includere " Scenario.jar " nel tuo percorso di creazione.

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;



}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top