top / index / prev / next / target / source

2012-09-15 diary: [JavaFX] MessgeBox by OSS / メッセージボックスの OSS 実装

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

[JavaFX] MessgeBox by OSS / メッセージボックスの OSS 実装

[JavaFX] メッセージボックスのサンプル

大変残念なことに、現行バージョンの JavaFX 2 にはメッセージボックス API が存在しません。 仕方がないので自分で作ることになります。ここに ものすごく単純なメッセージボックス API のサンプルを示します。モーダルダイアログボックスでメッセージを表示します。 ☆現実的には、これにアイコンなどを追加したり、YES/NO/Cancel などのバリエーションを追加していくことになります。 ☆JavaFX 2.2 以降でのみ動作します。∵dialog.showAndWait();

<MyMessageBox.java>

package sample;

import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.Window;

/**
 * すごく単純な JavaFX 2 によるメッセージボックスのサンプル。
 */
public class MyMessageBox {
  public static void showMessageDialog(final Window parentWindow,
      final String message, final String title) {
    final Stage dialog = new Stage();
    dialog.setTitle(title);
    dialog.setResizable(false);
    dialog.initModality(Modality.WINDOW_MODAL);
    if (parentWindow != null) {
      dialog.initOwner(parentWindow);
    }

    final StackPane pane = new StackPane();
    dialog.setScene(new Scene(pane));

    {
      final VBox vbox = new VBox();
      pane.getChildren().add(vbox);

      vbox.setAlignment(Pos.CENTER);
      vbox.setMinWidth(300);

      vbox.getChildren().add(new Label(""));// 空行
      vbox.getChildren().add(new Label(message));
      vbox.getChildren().add(new Label(""));// 空行

      final Button btnOk = new Button();
      btnOk.setText("OK");
      btnOk.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent e) {
          dialog.close();
        }
      });
      vbox.getChildren().add(btnOk);
      vbox.getChildren().add(new Label(""));// 空行

    }

    dialog.showAndWait();
  }
}

登場キーワード


この日記について