Статьи

JavaFX 2.0 в RCP NetBeans

Ниже следует прототип текущего состояния интеграции JavaFX в RCP NetBeans. Это только прототип и никак не отражает конечное состояние этой интеграции. (Надеюсь, что на самом деле все будет намного проще и понятнее, чем описано ниже.)

Один из примеров дистрибутива JavaFX 2.0 — это кирпичная игра:

К счастью, это проект NetBeans:

Как вы можете видеть выше, класс Main приложения расширяет класс «javafx.application.Application», который запускает жизненный цикл JavaFX вместе со своим собственным специальным потоком JavaFX.

Теперь давайте перейдем к кирпичной игре в NetBeans RCP. Одним из многих приложений в NetBeans RCP является среда IDE NetBeans. Итак, в качестве примера мы собираемся научиться играть в кирпичную игру JavaFX в среде IDE NetBeans:

Сделайте следующие шаги:

  1. Читайте справочные документы. Прочитайте эту справку NetBeans Тома Уилера и эту запись в блоге на Josch Риттнер .
  2. Станьте партнером JavaFX. Так что вы можете получить ранние дистрибутивы JavaFX.
  3. Создайте основной класс JavaFX для вашего проекта RCP NetBeans. Начните с создания проекта библиотеки Java в IDE NetBeans, добавьте «jfxrt.jar» из дистрибутива JafaFX в качестве библиотеки и создайте этот класс, который вы понимаете, поскольку выполнили шаг 1 этих инструкций:

    package mymain;

    import java.lang.reflect.Method;
    import javafx.application.Application;
    import javafx.stage.Stage;

    public class CustomStartup extends Application {

    private static final String NB_MAIN_CLASS = "org.netbeans.core.startup.Main";

    public static void main(String[] args) throws Exception {
    // do whatever you need here (e.g. show a custom login form)
    System.out.println("Launch Java FX");
    long ms = System.currentTimeMillis();
    // create JavaFX scene
    Application.launch(CustomStartup.class, args); // This is the main start up for JavaFX 2.0
    System.out.println("Launched Java FX in " + (System.currentTimeMillis() - ms) + "ms");
    // once you're done with that, hand control back to NetBeans
    ClassLoader classloader = Thread.currentThread().getContextClassLoader();
    Class mainClass = Class.forName(NB_MAIN_CLASS, true, classloader);
    Object mainObject = mainClass.newInstance();
    Method mainMethod = mainClass.getDeclaredMethod("main", new Class[]{String[].class});
    mainMethod.invoke(mainObject, (Object) args);
    }

    @Override
    public void start(Stage stage) {
    // Nothing to do, forget the stage....
    }

    }

    Вот как должен выглядеть проект библиотеки Java:

  4. Поместите JAR в путь загрузки класса. Возьмите JAR, который вы создали из вышеупомянутого проекта библиотеки Java, и поместите его в папку «platform / core» вашего приложения, с «jfxrt.jar» в папке «platform / lib», и все DLL в новой «bin» папка:

  5. Перенесите кирпичную игру в модуль NetBeans. Создайте новый модуль, оберните «jfxrt.jar» в модуль, скопируйте все классы из кирпичной игры в модуль, создайте новое окно, разумно скопируйте код из класса «Main.java» в новое окно, используя JFXPanel, следующим образом:

    Platform.runLater(new Runnable() {
    @Override
    public void run() {
    Config.initialize();
    Group root = new Group();
    mainFrame = new MainFrame(root);
    Scene scene = new Scene(root);
    scene.setFill(Color.BLACK);
    jFXPanel1.setScene(scene);
    mainFrame.changeState(MainFrame.SPLASH);
    }
    });

    Хорошей новостью является то, что, получив сцену JavaFX, вы можете использовать JFXPanel.setScene и добавить JFXPanel в TopComponent. После этого вы интегрировали свою сцену в Swing, то есть JavaFX теперь работает в Swing.

  6. Укажите ваш основной класс JavaFX. Откройте «project.properties» модуля и добавьте следующую строку:

    run.args.extra=-J-Dnetbeans.mainclass=mymain.CustomStartup

    Теперь запустите модуль. Приложение (в данном случае NetBeans IDE) запускается, «MyMain.jar» находится в пути к загрузочному классу, основной класс указан в модуле, поэтому JavaFX запускается, затем открывается окно и начинается ваша игра.

Единственный реальный вопрос — «Почему». В корпоративных приложениях (т. Е. Видах требований к приложениям, которые приводят к использованию RCP NetBeans), игры не очень полезны. Графики, с другой стороны, очень полезны, и JavaFX поставляется с собственным набором диаграмм, которые мы рассмотрим в другой раз.

Одна очень крутая вещь была бы, если бы у нас был модуль JavaFX Starter на портале плагинов NetBeans . Когда вы устанавливаете этот модуль в любое приложение RCP NetBeans, «MyMain.jar» выше будет помещен в «platform / core», «jfxrt.jar» будет помещен в «platform / lib», а DLL будут положить в «платформу / бен». То есть все эти файлы будут существовать в модуле, и модуль будет помещать их во все нужные места. Затем модуль вызовет перезапуск приложения, после чего собственный «run.args.extra» модуля будет использоваться для использования нового основного класса JavaFX, показанного выше. Тогда любой желающий мог установить JFXPanels в свои приложения RCP NetBeans, не задумываясь о требованиях запуска JavaFX.