NetBeans RCP und JavaFX (Tutorial)

Ich hatte vor einiger Zeit schon einmal einen Beitrag hierzu im NetBeans-Forum geschrieben, dieser ist aber durch diverse Foren Updates nicht mehr so richtig zu lesen und entspricht auch nicht mehr so ganz dem Stand der dinge. Deshalb habe ich mich entschlossen diesen hier noch einmal neu zu veröffentlichen.
Es gibt schon viele Tutorials bezüglich NetBeans RCP und auch schon ein paar die sich mir JavaFX in diesem Zusammenhang beschäftigen. Geholfen hat mir dabei auch Geertjan’s Blog wo ich einige Infos raus bezogen habe.
Aber nicht so viel vorrede sonder wir wollen dann mal loslegen.

Als erstes legen wir uns ein neues NetBeans Projekt an ‚File‚ -> ‚New Project‚, aus den Kategorien ‚NetBeans Platform Application‚ auswählen, zu finden unter ‚Categories‚ -> ‚NetBeans ModulesNB_NewProject

Jetzt noch ein Projektnamen vergeben, ich habe hier ‚JavaFX-Application‘ genommen, ist aber letztendlich egal.
New Project-Name and Location

Nach einem Klick auf ‚Finish‘ sollte es bei euch ungefähr so aus sehen
NetBeans-1

Jetzt müssen wir noch ein neues Modul hinzufügen, das geschieht mit einem Rechtsklick auf ‚Modules‚ -> ‚Add New‚.
Ich habe hier als ‚Project Name‚ ‚JavaFX‚ verwendet, denn Rest lassen wir unverändert stehen. Mit einem Klick auf ‚Next‚ geht es zu den ‚Basic Modul Configuration
New Module Project-Basic Modul Configuration

Nur noch ‚Finish‘ und das Grundgerüst einer NetBeans-RCP Anwendung steht, man kann es zwar jetzt schon starten [F6], macht aber an dieser Stelle noch nicht so viel Sinn.
NetBeans-2

[Update] Mittlerweile hat sich der Schritt zum einbinden der ‚jfxrt.jar‚ geändert, man kann jetzt direkt in NetBeans unter ‚Module Dependencies‚ -> ‚JavaFX wrapper‚ eintragen. Damit würde der das einbinden der ‚jfxrt.jar‚ nicht benötigt und kann übersprungen werden.

Als nächstes binden wir JavaFX in unser RCP Projekt ein, das machen wir indem wir mit einem Rechtklick auf ‚Modules‚ ‚Add New Library‚ auswählen.
In dem folgenden Fenster wird dann die JavaFX jar-Datei ausgewählt.
New Library Wrapper Module Project-1

Das nächste Fenster kann man unverändert lassen
New Library Wrapper Module Project-2

noch die ‚Code Name Base‘ angeben und mit ‚Finish‘ bestätigen.
New Library Wrapper Module Project-3

Dem Modul ‚JavaFX‚ müssen die Abhängigkeiten noch bekannt gemacht werden, dazu klickten wir mit der rechten Maustaste auf ‚JavaFX‚ und gehen auf ‚Properties‚.
Project Properties - JavaFX

Libraries‚ -> ‚Add Dependency‚ und Alls Module dann ‚jfxrt‚ auswählen und mit ‚OK‘ abschließen.
Add Module Dependency

In der NetBeans Project Ansicht klicken wir mit der rechten Maustaste auf ‚de.mkroll-javafx‚ und gehen auf ‚New‘ -> ‚Window‘
New Windows

Unter ‚Window Position‘ wählen wir ‚editor‚ aus und lassen denn Rest unverändert.
New Windows-2

Im folgenden Fenster noch einen ‚Class name Prefix‚ angeben, ‚Icon‚ lass ich mal leer, und mit ‚Finish‚ abschließen.
New Windows-3
Als nächste erstellen wir eine eine JavaFX Seite, ich benutze hierfür immer JavaFX Scene Builder.
JavaFX Scene Builder

Nach dem Starten des JavaFX Scene Builder ziehen wir und ein ‚Pane‚ aus der ‚Containers‚ Kategorie
JavaFX Scene Builder-AddPane

 

und ein ‚Label‚-Feld aus den ‚Controls
JavaFX Scene Builder-Label

Dieses speichern wir nun direkt in das Verzeichnis wo sich auch unsere ‚EditorWindowTopComponent‚ befindet.
Was wir jetzt noch machen müssen ist uns eine ‚Controller class‘ anlegen, was aber in NetBeans 8.x recht einfach geworden ist. Dazu machen wir in NetBeans einen Rechtsklick auf unserer JavaFXPage und gehen auf ‚Make Controller
MakeController

Als nächstes passen wir noch unserer ‚EditorWindowTopComponent‚ an, damit diese direkt unsere JavaFX-Page öffnet. Wir machen jetzt noch folgende Änderungen an unserer ‚EditorWindowTopComponent‚, wobei ‚init()‚ und ‚createScene‚ hinzugefügt werden.

public final class EditorWindowTopComponent extends TopComponent {

    // Die zwei Zeilen müssen hinzugefügt werden

    private JavaFXPageController controller;
    private JFXPanel fxPanel;

    public EditorWindowTopComponent() {
        initComponents();
        setName(Bundle.CTL_EditorWindowTopComponent());
        setToolTipText(Bundle.HINT_EditorWindowTopComponent());

        // Die zwei Zeilen müssen hinzugefügt werden
        setLayout(new BorderLayout());
        init();
    }
    /**
     * JavaFX init
     */
    public void init() {
        fxPanel = new JFXPanel();
        add(fxPanel, BorderLayout.CENTER);
        Platform.setImplicitExit(false);
        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                createScene();
            }
        });
    }
    /**
     * Create JavaFX scene
     */
    private void createScene() {
        try {
            URL location = getClass().getResource("/de/mkroll/javafx/JavaFXPage.fxml");
            FXMLLoader fxmlLoader = new FXMLLoader();
            fxmlLoader.setLocation(location);
            fxmlLoader.setBuilderFactory(new JavaFXBuilderFactory());
            Parent root = (Parent) fxmlLoader.load(location.openStream());
            Scene scene = new Scene(root);
            fxPanel.setScene(scene);
            controller = (JavaFXPageController) fxmlLoader.getController();
        } catch (IOException ex) {
            Exceptions.printStackTrace(ex);
        }
    }

Nicht vergessen danach die Fehlenden Abhängigkeiten aufzulösen [STRG] +[SHIFT] + [i].

Wenn wir jetzt alles gespeichert haben sollten wir unsere Anwendung starten können. Unser EditorWindow finden wir im Menü unter ‚Window‘ -> ‚EditorWindow‘
NetBeansRCP

Das war der erste Teil von meiner kleinen Einführung von Netbeans RCP und JavaFX.

Eine Antwort auf „NetBeans RCP und JavaFX (Tutorial)“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.