在 Java 中顯示 JavaFX 彈出視窗

Rupam Yadav 2023年10月12日
在 Java 中顯示 JavaFX 彈出視窗

在本文中,我們將看到如何使用 JavaFX 工具包中名為 popup 的元件之一。顧名思義,彈出元件在使用 JavaFX 的 GUI 功能執行時會顯示一個簡單的彈出視窗。以下是使用彈出元件的兩個示例。

用 Java 彈出一個文字

在進行實際程式之前,我們應該使用 JavaFX GUI 工具包檢查方法和類。

  • Stage:JavaFX 中的頂級類擴充套件了視窗,並建立了一個可以放置場景的視窗。
  • 場景:JavaFX 場景是另一個呈現 JavaFX 工具包給定元件的類。
  • JavaFX Application Class:用於啟動 JavaFX 應用程式,我們使用的類應該擴充套件應用程式類。

現在我們來看看程式;在下面的示例中,我們建立了一個類 Main 並擴充套件了 JavaFX 包的 Application 類。然後我們呼叫應用程式類的抽象方法 start(),這是必不可少的,因為它在應用程式啟動時執行。

start() 方法採用 Stage 型別的單個引數,由 JavaFX 執行時自動建立。由於 stage 是主視窗,我們使用 stage.setTitle() 設定其標題,為了開啟 JavaFX 彈出視窗,我們建立了一個 Button 元件的物件。

為了在彈出視窗中佈局元件,我們使用了一個名為 TilePane 的佈局元件,它將其子節點顯示為網格。接下來,我們建立一個 Label 元件的物件以顯示在彈出視窗中。

我們建立了一個 Popup 物件並使用 popup.getContent.add() 方法將 Label 物件新增到它。要設定 Label 的背景,我們使用 setStyle() 方法並傳入樣式。

然後,我們使用 setHeight()setWidth() 方法設定標籤的大小。現在,我們建立一個事件處理程式的匿名類來在單擊按鈕時開啟和關閉彈出視窗。

EventHandler<ActionEvent> 型別的匿名類中,我們呼叫 popup.isShowing() 並檢查彈出視窗是否在螢幕上可見,如果不可見,則使用 popup.show() 顯示它將 stage 物件作為引數傳遞的方法。為了隱藏彈出視窗,我們使用 hide() 函式。

現在我們將事件處理程式設定為 button 的動作,並使用 tilePane.getChildren().add()button 新增到 tilePane 佈局物件。為了顯示我們建立的所有元件,我們建立了一個 Scene 物件並傳遞 tilePane 和每個網格之間的間隙。

最後,我們將 scene 物件設定為 stage 物件並呼叫 stage 類的 show() 方法。最後,我們使用命令列引數呼叫 Application 類的 launch() 方法。

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);
  }
}

輸出(在開啟彈出視窗之前):

Java Javafx 彈出視窗

輸出(開啟彈出視窗後):

Java Javafx 彈出視窗

作者: Rupam Yadav
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

相關文章 - Java JavaFX