Pregunta

¿Puedo utilizar la nueva funcionalidad proporcionada por las nuevas API JavaFX directamente desde Java en la misma medida en que podría usar JavaFX Script?

¿Todas las API JavaFX subyacentes son puramente Java o JavaFX Script o una combinación?

¿Fue útil?

Solución

Las API de JavaFX son una mezcla de JavaFX y Java. El SDK viene con un archivo src.zip que contiene una parte de las API (solo se incluyen las clases más básicas, pero faltan cosas como javafx.scene).

Las llamadas a código JavaFX desde Java no se admiten oficialmente en JavaFX 1.x AFAIK. Hay una entrada de blog en el blog JavaFX que le muestra cómo hacerlo de todos modos usando sin soporte API, pero es complicado y no funcionará de esta manera en futuras versiones.

Hay dos formas compatibles de usar JavaFX desde Java. Puede utilizar la API de secuencias de comandos para invocar el código JavaFX, como se muestra en este artículo . O, que es la solución más elegante en mi humilde opinión, escriba el código de acceso a la API utilizando JavaFX, defina las interfaces Java para interactuar con su código JavaFX desde Java simple y luego implemente esas interfaces en JavaFX.

Otros consejos

Pudimos utilizar los componentes multimedia con JavaFX con cierto éxito. son totalmente incompatibles de esta manera y están sujetos a cambios similares a los paquetes com.sun en JavaSE.

Los integramos en una interfaz de usuario Swing y pudimos hacer las cosas MM que podrías hacer desde FX directamente desde Java.

Espero que pongan algo de eso en las bibliotecas centrales pronto.

La escena utilizada en JavaFX es de código abierto. Puede verificarlo aquí ( https://scenegraph.dev.java.net ). Si bien el sitio no se ha actualizado para reflejar la versión final que se incluye con JavaFX 1.x, aún puede usar el jar que viene con el SDK de JavaFX y mezclar escenas y nodos de swing dentro de su aplicación de swing. Sin embargo, tendrá algunas dificultades porque no hay una API oficial para esta versión de scenegraph.

Aquí hay un "hola mundo" usando el scenegraph que viene con JavaFX 1.0. Recuerde incluir el " Scenario.jar " en su ruta de compilación.

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;



}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top