Java での JavaFX ポップアップの表示

Rupam Yadav 2023年10月12日
Java での JavaFX ポップアップの表示

この記事では、ポップアップと呼ばれる JavaFX ツールキットのコンポーネントの 1つを使用する方法を説明します。名前が示すように、ポップアップコンポーネントは、JavaFX の GUI 機能を使用して実行すると単純なポップアップを表示します。以下は、ポップアップコンポーネントの使用例です。

Java のテキストを含むポップアップ

実際のプログラムに進む前に、JavaFXGUI キットを使用してメソッドとクラスを確認する必要があります。

  • ステージ:JavaFX の最上位クラスはウィンドウを拡張し、シーンを配置できるウィンドウを作成します。
  • シーン:JavaFX シーンは、JavaFX ツールキットの特定のコンポーネントをレンダリングする別のクラスです。
  • JavaFX アプリケーションクラス:JavaFX アプリケーションを起動するために使用されます。使用するクラスは、アプリケーションクラスを拡張する必要があります。

今、私たちはプログラムに来ます。以下の例では、クラス Main を作成し、JavaFX パッケージの Application クラスを拡張します。次に、アプリケーションクラスの抽象メソッド start() を呼び出します。これは、アプリケーションの起動時に実行されるため、必須です。

start() メソッドは、JavaFX ランタイムによって自動的に作成される Stage タイプの単一の引数を取ります。stage はメインウィンドウであるため、stage.setTitle() を使用してタイトルを設定し、JavaFX ポップアップを開くために、Button コンポーネントのオブジェクトを作成します。

ポップアップ内のコンポーネントをレイアウトするには、子ノードをグリッドとして表示する TilePane と呼ばれるレイアウトコンポーネントを使用します。次に、ポップアップに表示する Label コンポーネントのオブジェクトを作成します。

Popup オブジェクトを作成し、popup.getContent.add() メソッドを使用して Label オブジェクトを追加します。ラベルの背景を設定するには、setStyle() メソッドを使用してスタイルを渡します。

次に、setHeight() および setWidth() メソッドを使用してラベルのサイズを設定します。次に、ボタンがクリックされたときにポップアップを開いたり閉じたりするイベントハンドラーの匿名クラスを作成します。

EventHandler<ActionEvent> タイプの匿名クラスでは、popup.isShowing() を呼び出し、ポップアップが画面に表示されているかどうかを確認し、表示されていない場合は、popup.show() を使用して表示します。stage オブジェクトが引数として渡されるメソッド。ポップアップを非表示にするには、hide() 関数を使用します。

次に、イベントハンドラーを button のアクションとして設定し、tilePane.getChildren().add() を使用して buttontilePane レイアウトオブジェクトに追加します。作成したすべてのコンポーネントを表示するために、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);
  }
}

出力(ポップアップを開く前):

JavaJavafx ポップアップ

出力(ポップアップを開いた後):

JavaJavafx ポップアップ

著者: 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