Совместимость JavaFX и Java - PullRequest
2 голосов
/ 12 ноября 2008

Могу ли я использовать новые функциональные возможности, предоставляемые новыми API JavaFX напрямую из Java, в той же степени, в которой я смог бы использовать JavaFX Script?

Являются ли все базовые API JavaFX чисто Java или JavaFX Script или смесь?

Ответы [ 3 ]

3 голосов
/ 28 марта 2009

API JavaFX представляют собой смесь JavaFX и Java. SDK поставляется с архивом src.zip, который содержит часть API (включены только самые основные классы, но отсутствуют такие вещи, как javafx.scene).

Вызов JavaFX-кода из Java официально не поддерживается в JavaFX 1.x AFAIK. В блоге JavaFX есть запись в блоге , в которой показано, как это сделать в любом случае с помощью неподдерживаемых API, но это сложно и не будет работать в будущих версиях.

Существует два поддерживаемых способа использования JavaFX из Java. Либо вы используете API сценариев для вызова кода JavaFX, как показано в этой статье . Или, что является наиболее элегантным решением IMHO, напишите код доступа к API с использованием JavaFX, определите интерфейсы Java для взаимодействия с вашим кодом JavaFX из простой Java, а затем реализуйте эти интерфейсы в JavaFX.

1 голос
/ 04 апреля 2009

Сценарий, используемый в JavaFX, является открытым исходным кодом. Вы можете проверить это здесь (https://scenegraph.dev.java.net). Хотя сайт не был обновлен, чтобы отразить окончательную версию, поставляемую с JavaFX 1.x, вы все равно можете использовать jar, который поставляется с JavaFX SDK и смешивать сцены и свинг-узлы внутри вашего Swing-приложения. Однако у вас будут некоторые трудности, потому что для этой версии scenegraph нет официального 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;



}
1 голос
/ 02 апреля 2009

Мы смогли с успехом использовать мультимедийные компоненты с JavaFX. таким образом они полностью не поддерживаются и могут изменяться так же, как и пакеты com.sun в JavaSE.

Мы интегрировали их в пользовательский интерфейс Swing и смогли сделать то, что вы могли бы сделать из FX прямо из Java.

Надеюсь, они скоро добавят это в основные библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...