JavaFX

Das Erstellen von benutzerfreundlichen Programmen gelingt heute nur noch über grafische Oberflächen sogenannte GUIs. Wir haben bereits über Java AWT und SWING gesprochen in einem vorherigen Kapitel. Für den Bau von schönen Oberflächen ist Java SWING oder AWT nur begrenzt geeignet, da die Elemente veraltet wirken. Auch die Methode der Fenster Erstellung funktioniert in der heutigen Zeit über Drag and Drop.

JavaFX ist hierbei hervorragend geeignet, da es neben der herkömmlichen Methode von SWING und AWT noch einen Scene Builder hat, mit dem man sehr schnell umfangreiche Oberflächen bauen kann. Hierbei sind den Oberflächen Designern quasi keine Grenzen gesetzt.

Quelle: https://www.youtube.com/watch?v=AS26gZrYNy8

Nun aber erst einmal zu der Installation in Eclipse, damit du dein erstes eigenes GUI Programm erstellen kannst mit JavaFX. Folgende Schritte musst du hierbei durchlaufen:

  • Eclipse Marketplace unter dem Menüpunkt “Help” besuchen
  • In das Suchfeld “javafx” eingeben
  • Installiere die folgende Software:
  1. Akzeptiere die Nutzungsbedingungen von Javafx und fahre fort
  2. Wenn die Installation abgeschlossen ist verlangt Eclipse nach einem Neustart
  3. Nun kannst du JavaFX verwenden.

Eclipse hat jetzt JavaFX hinzugefügt und es lässt sich verwenden. Nun bist du bereit für dein erstes Programm mit JavaFX. Bevor wir ein neues Projekt im Package Explorer anlegen, musst du dir gedanken machen, ob du deine GUI mit oder ohne Scenebuilder bauen möchtest. Wir werden als erstes auf die Vorgehensweise ohne Scenebuilder eingehen und dann im Anschluss eine Konfiguration mit SceneBuilder vornehmen.

Ohne SceneBuilder:

Für eine Konfiguration der GUI ohne den SceneBuilder legst du ein ganz normales Java Projekt an. Im nächsten Schritt fügst du ein package mit beliebigem Namen hinzu. Unter diesem Package ordnest du eine neue Klasse des Typs “JavaFX Main Class” an.

Nun musst du nur noch einen Namen für diese Klasse vergeben und du kannst direkt loslegen.Wenn du nun die Main Class öffnest wirst du einige unterschiede zu einer herkömmlichen Main Class feststellen können. Die JavaFX Main Class sollte bei dir folgendermaßen aussehen:

Die Main Methode werden wir in unserem Tutorial nicht verändern, da diese nur für den Start unserer GUI verantwortlich ist. Den Rest erledigen wir über die Methode “start”. In unserem Tutorial wollen wir ein Programm mit zwei Buttons, einem Label und einem Textfeld bauen. Wenn man den 1. Button drückt verändert sich der Text des Labels von “Ich putze hier nur.” zu “Hallo Benutzer”. Drückt man den 2.Button wird in das Textfeld “WOW! Jetzt hast du auch noch den 2.Button geklickt” geschrieben. Der Code hierfür sieht folgendermaßen aus:

Der Code lässt sich in drei Abschnitte gliedern. Im ersten Abschnitt befinden sich alle Klassen, die für dieses Programm importiert werden müssen. Außerdem werden alle Elemente, die sich auf dem Fenster befinden deklariert. In diesem Fall button1, button2, label1 und text1.

Im zweiten Abschnitt werden die Elemente initialisiert. Das Fenster wird als “1.Programm” benannt und die Buttons bekommen den Namen “1.Button” und “2.Button” usw. Im nächsten Schritt werden die Elemente sogenannte Boxen gepackt um sie zu gruppieren (siehe Zeile 29-34). Dann werden diese Boxen dem Panel hinzugefügt (siehe Zeile 35-38). Zum Schluss wird noch eine Szene deklariert, die dann die letztendliche Größe des Bildschirms in Pixeln festlegt und das Panel hinzufügt. Außerdem werden schon die Buttons sensibilisiert, damit sich auf verschiedene Aktionen durch den AktionHandler reagieren können (siehe 43f.).

Im letzten Schritt werden noch die Aktionen festgelegt, die der Benutzer in diesem Programm vornehmen kann. Durch die Implementation des EventHandler muss die Methode handle im Programm aufgerufen werden. In dieser Methode werden dann die Aktionen der Buttons festgelegt (siehe Zeile 52-61).

Wenn du nun alles gespeichert hast und das Programm ausführst müsste es die folgendes GUI anzeigen:

Mit SceneBuilder

Die Konfiguration mit dem SceneBuilder gestaltet sich etwas schwieriger. Sie hat aber den Vorteil, dass das GUI am Ende deutlich schöner aussieht und der Bau und die Ausrichtung der einzelnen Elemente schneller von der Hand geht. Damit du Programme mit dem SceneBuilder bauen kannst benötigst du als aller erstes den SceneBuilder von Oracle. Du findest den SceneBuilder hier. Lade dir die passende Version für die richtige Plattform runter und installiere das Programm.

Im nächsten Schritt legen wir ein neues JavaFX Project in deinem Package Explorer an. Achte hierbei darauf, dass du ein “JavaFX Project” auswählst.

Wähle nun einen geeigneten Namen und bestätige alles. Nun müsstest du in deinem Packageexplorer ein solches Projekt finden. Wir benötigen neben der Main Class noch eine weitere Klasse, die in unserem Programm die Logik übernimmt. Die Organisation des gesamten Programms in einer Klasse ist leider nicht möglich, da der SceneBuilder eine Controller Klasse fordert in der späteren Konfiguration. Der Code für die Main Class sieht hierbei folgendermaßen aus:

In Zeile 27f. haben wir ein neues FXML File erstellt mit dem Namen “MainWindow”. Dieses File rufen wir in unserem ScenBuilder dann auf. Wir gehen hierbei folgendermaßen vor:

  • Navigiere in das Package, indem sich auch die Main und die Controller Klasse befindet.
  • Klicke auf das Package und drücke STRG + N
  • Nun wählst du ein “New FXML Document” aus

  • Nun vergibst du den Namen “MainWindow”
  • Drücke “Finish” um den Vorgang abzuschließen
  • Nun müsste in deinem Packageexplorer dieses File erscheinen
  • Gehe nun mit einem Rechtsklick auf dieses File und wähle die Option “Open with SceneBuilder”
  • Nun müsste sich der SceneBuilder im Hintergrund öffnen.
  • Nun kannst du dein Fenster beliebig designen

Unsere Main Class kannst du hier downloaden:

Wenn du unser Design verwenden möchtest downloade dir folgende Datei:

Die Controller Klasse kannst du hier ebenfalls downloaden:

Hier noch eine kurze Zusammenfassung von JavaFX