Java, grafische Benutzeroberflächen mit JavaFX

JavaFX Logo

JavaFX ist ein Framework, mit dem man für Java-Programme interaktive grafische Benutzeroberflächen mit Audio-, Video-, Grafik- und Animationsfunktionen anlegen kann.


Eine Einführung zu grafischen Benutzeroberflächen mit Java finden Sie in diesem Beitrag:

Für unser Beispiel-Projekt verwenden wir

  • einen Computer mit dem Betriebssystem Fedora 39 Workstation
  • Java openJDK 22.0
  • JavaFX SDK 22.0.1
  • Visual Studio Code

Die Einrichtung von JavaFX funktioniert aber auf anderen Betriebssystemen ähnlich.

Installation

Um JavaFX verwenden zu können, laden Sie zunächst das für Ihr Betriebssystem passende Paket von der Herstellerseite herunter.

https://gluonhq.com/products/javafx

Sind Sie nicht sicher über die Prozessor-Architektur Ihres Rechners, ermitteln Sie dies in einem Terminal mit dem Befehl:

uname -m 

Dieser liefert z.B. die Ausgabe x86_64 , dementsprechend wählen Sie „x64“ aus der Liste der Downloads.

Wir verwenden die neueste Version (Stand April 2024) 22.0.1, für Linux, SDK (Software Development Kit).

Für unser System, Fedora Workstation 39, ist das also das Paket:

Hersteller-Webseite von JavaFX, oben der Schrifzug "Gluon", im Download-Bereich ist das SDK für Linux ausgewählt.


Entpacken Sie das heruntergeladene zip-file und – optional – verschieben Sie es in eine anderes Verzeichnis. Wir haben in Verzeichnis „java-projects“ einen Ordner „FX_22“ angelegt und das „javafx-sdk-22.0.1“ – Verzeichnis hierher verschoben.
Im Unterverzeichnis „lib“ finden Sie viele Dateien mit der Endung .jar , die jeweils Programmcode für unterschiedliche grafische Komponenten enthalten.


Diese werden später in das eigene Projekt eingebunden.

Exkurs: „jar“ steht für Java ARchive. Es ist ein Dateiformat, das auf dem ZIP-Dateiformat basiert und zum Zusammenfassen vieler Dateien in einer einzelnen Datei verwendet wird. (Oracle)

Ein JavaFX-Projekt erstellen

Erstellen Sie nun ein neues Java-Projekt in Visual Studio Code. Eine Anleitung finden Sie hier:

für Fedora 39

für den Mac

für Ubuntu 22.04

für Windows 11

Mit Hilfe der Command-Palette oder der Projekt-Verwaltung in der Seitenleiste „Create Java Project“ erstellen Sie ein Projekt. Wählen Sie „No build tools“.

VSCode:Ein neues Projekt erstellen

Und dann können Sie auch schon im Verzeichnis „src“ die App.java über den run -Button starten, um das Projekt zu prüfen.

Für einen ersten Test wird auf der GitHub-Seite des Herstellers JavaFX eine Beispieldatei, die ein Fenster erzeugt, zur Verfügung gestellt.

https://github.com/openjfx/samples/blob/master/HelloFX/CLI/hellofx/HelloFX.java

Sie hat den folgenden Inhalt:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloFX extends Application {

    @Override
    public void start(Stage stage) {
        String javaVersion = System.getProperty("java.version");
        String javafxVersion = System.getProperty("javafx.version");
        Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + ".");
        Scene scene = new Scene(new StackPane(l), 640, 480);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch();
    }

}

Erstellen Sie im Verzeichnis „src“ eine neue Datei HelloFX.java , löschen Sie deren Inhalt und fügen Sie den Inhalt der Beispieldatei ein. Die Datei „App.java“ müssen Sie löschen.

In VSCode erhalten Sie viele Warnmeldungen, im Code ist vieles rot unterstrichen, der Dateiname ist eingefärbt. Dies liegt daran, dass die erforderlichen JavaFX Bibliotheken noch nicht gefunden werden können.

Libraries hinzufügen

Sie beheben dies durch Hinzufügen der JavaFX-Bibliotheken über die Option „Referenced Libraries“, ganz unten links in der Seitenleiste.

VSCode: die Java Projektverwaltung unten in der Seitenleiste, der Punkt "References Libraries mit einem Plus-Symbol ist ausgewählt.

In der Dateiverwaltung finden Sie die Bibliotheken in dem zuvor heruntergeladenen Paket und dem Unterverzeichnis „lib“. Wählen Sie alle .jar-Dateien aus.

Fedora Dateiverwaltung, das JavaFX SDK Verzeichnis "lib" ist geöffnet und die darin enthaltenen Dateien markiert.

Und bestätigen die Auswahl mit der Schaltfläche „Select .jar Libraries“. Anschließend erscheinen alle Dateien in VSCode und auch die Fehler sind verschwunden.

VSCode: im Hauptfenster die Beispieldatei für JavaFX, unten links in der Seitenleiste ist der Menüpunkt "References Libraries" geöffnet, die hinzugefügten Bibliotheken erscheinen als Liste.

Wenn Sie nun mit „Run“ die Datei ausführen …

VSCode: unten ist der Terminal-Bereich geöffnet und zeigt eine Fehlermeldung.

… erhalten Sie trotzdem noch eine Fehlermeldung im Terminal: „Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen“.

Konfigurationsdatei erstellen

Damit die neu hinzugefügten Bibliotheken gefunden werden können, muss der Pfad und das zu verwendende Modul in einer Konfigurationsdatei bestimmt werden.

Die beiden folgenden Informationen müssen mit dem Eintrag „vmArgs“ bereitgestellt werden:

--module-path 
--add-modules

Exkurs vmArgs: das sind die Argumente, die man an den Compiler übergibt. Wenn Sie die .java-Datei „von Hand“ im Terminal kompilieren, werden beide dem Kommando javac angefügt.

javac --module-path $PATH_TO_FX --add-modules javafx.controls,javafx.fxml HelloFX.java

Statt des Pfades kann die Variable $PATH_TO_FX verwendet werden, wenn eine entsprechende Umgebungsvariable z.B. in der Datei „bashrc“ hinterlegt wurde.

In gleicher Weise wird im Terminal das Programm selbst dann mit java gefolgt von den Argumenten aufgerufen:

java --module-path $PATH_TO_FX --add-modules javafx.controls HelloFX

Der Eintrag in der Datei „launch.json“, den Pfad müssen Sie durch den auf Ihrem Rechner ersetzen:

"vmArgs": "--module-path /home/henriette/FX_22/javafx-sdk-22.0.1/lib --add.modules javafx.controls javafx.fxml"

Öffnen Sie über das Menü „Run > Add Configuration…“ die Datei „launch.json“.

VSCode, im Hauptfenster der Inhalt der Datei "launch.json".

Wenn Sie unsicher sind wegen des Pfades, öffnen Sie mit der Kontext-Taste (rechte Maustaste) ein Terminal bei Ihrem JavaFX-SDK „lib“-Verzeichnis und lassen Sie den Verzeichnispfad mit dem Kommando pwd anzeigen. Die Ausgabe kann man dann einfach kopieren und in der Konfigurationsdatei einsetzen.

Fedora Terminal, der Pfad für das "lib"-Verzeichnis wird angezeigt.

Die vollständige Datei „launch.json“:

VSCode, im Hauptfenster der Inhalt der Datei "launch.json", mit ergänzten "vmArgs".

Die Datei noch speichern und dann können Sie das Programm mit „Run“ starten. Das Terminal zeigt eine reguläre Ausgabe und es öffnet sich ein neues Fenster.

VSCode mit der Datei HelloFX im Hauptfenster. Darüber eingeblendet das mit dem Programm erzeugte JavaFX-Fenster, mit weißem Fensterhintergrund, einer schwarzen oberen Leiste und Text in der Fenstermitte.

Ausblick

Wir haben für dieses Beispiel-Projekt die erforderlichen JavaFX-Bibliotheken von der Hersteller-Webseite heruntergeladen, unserem Projekt hinzugefügt und die Konfigurationsdatei erstellt. Diese grundlegenden Schritte sollten Sie kennen.
Um sich die Arbeit für weitere Projekte ein wenig zu erleichtern, hilft ein Build-Tool wie Maven oder Gradle. Diese kümmern sich selbständig um die Verwaltung der Bibliotheken.


Quellen:

https://openjfx.io/openjfx-docs