2012年12月16日日曜日

Java FXのダイアログ

標準のダイアログが無いようなので作ってみた。

import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.paint.Color;
import javafx.scene.control.*;
import javafx.event.*;

public class FBDialog {

 private static final int W = 300;
 private static final int H = 120;
 
 private static final int BUTTON_W = 80;
 
 public static void show(String title, String message, final Stage owner) {
  final Stage stage = new Stage();
  stage.setResizable(false);
  
  stage.initModality(Modality.APPLICATION_MODAL);
  stage.initOwner(owner);
  stage.setTitle(title);
  Group root = new Group();
  Scene scene = new Scene(root, W, H, Color.WHITE);

  Label label = new Label();
  label.setText(message);
  label.setLayoutX(10);
  label.setLayoutY(20);
  label.setMaxWidth(W-20);
  label.setWrapText(true);
  
  Button button = new Button();
  button.setOnAction(new EventHandler<ActionEvent>() {
   public void handle(ActionEvent event) {
    stage.hide();
   }
  });

  button.setPrefWidth(BUTTON_W);
  button.setLayoutX(W / 2 - BUTTON_W / 2);
  button.setLayoutY(80);
  button.setText("OK");

  root.getChildren().addAll(label, button);
  stage.setScene(scene);
  stage.show();
 }
}

例えばこんなコードを書いて実行すると、

FBDialog.show("Test", "This is a test dialog.", stage);

こんなダイアログが出る。

ラベルをセンターに置く方法がよくわからなかった。今後の課題。

0 件のコメント:

コメントを投稿