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




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.
Нам удалось использовать мультимедийные компоненты с JavaFX с некоторым успехом. они полностью не поддерживаются таким образом и могут быть изменены так же, как пакеты com.sun в JavaSE.
Мы интегрировали их в пользовательский интерфейс Swing и смогли делать то же самое, что и в FX, прямо из Java.
Надеюсь, что они скоро добавят часть этого в основные библиотеки.
Граф сцены, используемый в JavaFX, имеет открытый исходный код. Вы можете проверить это здесь (https://scenegraph.dev.java.net). Хотя сайт не был обновлен, чтобы отразить окончательную версию, поставляемую с JavaFX 1.x, вы все равно можете использовать jar, который поставляется с JavaFX SDK, и смешивать узлы сцены и поворота внутри вашего приложения 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;
}
Подобно stackoverflow.com/questions/359683/javafx-and-java.