Anzeigen eines JavaFX-Popups in Java

Rupam Yadav 12 Oktober 2023
Anzeigen eines JavaFX-Popups in Java

In diesem Artikel werden wir sehen, wie wir eine der Komponenten des JavaFX-Toolkits namens popup verwenden können. Wie der Name schon sagt, zeigt die Popup-Komponente ein einfaches Popup, wenn sie mit den GUI-Funktionen von JavaFX ausgeführt wird. Im Folgenden finden Sie zwei Beispiele für die Verwendung der Popup-Komponente.

Bevor wir mit dem eigentlichen Programm fortfahren, sollten wir uns die Methoden und Klassen mit dem JavaFX GUI-Kit ansehen.

  • Bühne: Die Top-Level-Klasse in JavaFX erweitert das Fenster und erstellt ein Fenster, in dem wir eine Szene platzieren können.
  • Szene: Eine JavaFX-Szene ist eine weitere Klasse, die die angegebenen Komponenten des JavaFX-Toolkits rendert.
  • JavaFX-Anwendungsklasse: Wird verwendet, um die JavaFX-Anwendung zu starten, und die von uns verwendete Klasse sollte die Anwendungsklasse erweitern.

Nun kommen wir zum Programm; im folgenden Beispiel erstellen wir eine Klasse Main und erweitern die Klasse Application des JavaFX-Pakets. Anschließend rufen wir die abstrakte Methode start() der Anwendungsklasse auf, die notwendig ist, da sie beim Start der Anwendung ausgeführt wird.

Die Methode start() verwendet ein einzelnes Argument vom Typ Stage, das automatisch von der JavaFX-Laufzeit erzeugt wird. Da stage das Hauptfenster ist, setzen wir seinen Titel mit stage.setTitle(), und um das JavaFX-Popup zu öffnen, erstellen wir das Objekt einer Button-Komponente.

Um die Komponenten innerhalb des Popups zu gestalten, verwenden wir eine Layoutkomponente namens TilePane, die ihre untergeordneten Knoten als Raster anzeigt. Als nächstes erstellen wir ein Objekt der Komponente Label, das im Popup angezeigt wird.

Wir erstellen ein Popup-Objekt und fügen ihm das Label-Objekt mit der Methode popup.getContent.add() hinzu. Um den Hintergrund des Label zu setzen, verwenden wir die Methode setStyle() und übergeben den Stil.

Dann legen wir die Größe des Labels mit den Methoden setHeight() und setWidth() fest. Jetzt erstellen wir die anonyme Klasse eines Ereignishandlers, um das Popup zu öffnen und zu schließen, wenn auf die Schaltfläche geklickt wird.

In der anonymen Klasse vom Typ EventHandler<ActionEvent> rufen wir popup.isShowing() auf und prüfen, ob das Popup auf dem Bildschirm sichtbar ist, und wenn nicht, zeigen wir es mit popup.show() an. Methode, bei der das Objekt stage als Argument übergeben wird. Um das Popup auszublenden, verwenden wir die Funktion hide().

Nun setzen wir den Eventhandler als Aktion des button und fügen den button mit tilePane.getChildren().add() zum Layout-Objekt tilePane hinzu. Um alle von uns erstellten Komponenten anzuzeigen, erstellen wir ein Scene-Objekt und übergeben tilePane und die Lücken zwischen den einzelnen Rastern.

Schließlich setzen wir das Objekt scene auf das Objekt stage und rufen die Methode show() der Klasse stage auf. Zuletzt rufen wir die Methode launch() der Klasse Application mit den Kommandozeilenargumenten auf.

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.TilePane;
import javafx.stage.Popup;
import javafx.stage.Stage;

public class Main extends Application {
  public void start(Stage stage) {
    stage.setTitle("A Popup Example");
    Button button = new Button("Click to open a Popup");

    TilePane tilePane = new TilePane();
    Label label = new Label("This is a popup");

    Popup popup = new Popup();

    label.setStyle("-fx-background-color: grey;");
    popup.getContent().add(label);

    label.setMinWidth(100);
    label.setMinHeight(80);

    EventHandler<ActionEvent> actionEventHandler = et -> {
      if (!popup.isShowing()) {
        popup.show(stage);
        button.setText("Click to Hide a Popup");
      } else {
        popup.hide();
        button.setText("Click to open a Popup");
      }
    };

    button.setOnAction(actionEventHandler);
    tilePane.getChildren().add(button);

    Scene scene = new Scene(tilePane, 450, 360);
    stage.setScene(scene);
    stage.show();
  }

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

Ausgabe (vor dem Öffnen des Popups):

Java Javafx-Popup

Ausgabe (nach dem Öffnen des Popups):

Java Javafx-Popup

Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Verwandter Artikel - Java JavaFX