Pergunta

Posso utilizar a nova funcionalidade proporcionada pelas novas APIs JavaFX diretamente do Java, na mesma medida como eu seria capaz de usar o JavaFX Script?

são todos os subjacente JavaFX APIs puramente Java ou JavaFX Script ou uma mistura?

Foi útil?

Solução

APIs

O JavaFX é uma mistura de JavaFX e Java. O SDK vem com um src.zip arquivo que contém uma parte das APIs (apenas as classes mais básicos estão incluídos, mas coisas como javafx.scene estão faltando).

Chamando código JavaFX de Java não é oficialmente suportado em JavaFX 1.x AFAIK. Há um entrada de blog no JavaFX blogue que mostra como fazer de qualquer maneira ele usando sem suporte APIs, mas é complicado e não vai funcionar dessa maneira em versões futuras.

Existem duas maneiras suporte para usar JavaFX de Java. Ou você usa a API de scripts para invocar código JavaFX, como mostrado na este artigo . Ou, o que é a solução elegante IMHO mais, escrever o código-aceder a API utilizando JavaFX, definir interfaces Java para interagir com o seu código JavaFX de Java simples, e em seguida, implementar essas interfaces em JavaFX.

Outras dicas

Nós fomos capazes de usar os componentes multi-mídia com JavaFX com algum sucesso. eles são totalmente sem suporte desta maneira e sujeitos a alteração semelhante à forma como os pacotes com.sun estão em JavaSE.

Nós integramos-los em um balanço UI e foram capazes de fazer as coisas MM você poderia fazer de FX em linha reta de Java.

Hope eles colocaram alguns dos que nas bibliotecas centrais em breve.

O scenegraph usado em JavaFX é opensource. Você pode verificar-lo aqui ( https://scenegraph.dev.java.net ). Enquanto o site não foi atualizado para refletir a versão final enviada com JavaFX 1.x, você ainda pode usar o frasco que vem com o JavaFX SDK e misture scenegraph e balançar os nós dentro de sua aplicação swing. No entanto, você terá alguma dificuldade porque não há nenhuma API oficial para esta versão do scenegraph.

Aqui está um "Olá mundo" usando o scenegraph que vem woth JavaFX 1.0. Lembre-se de incluir o "Scenario.jar" em seu caminho de construção.

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top