ともさんのHP >プロブラミング >JavaFX >ダイアログ

JavaFXダイアログのサンプルプログラム

JavaFXプログラムの進行中に確認や入力、選択が必要な場合に表示するダイアログのサンプルプログラムです。
下の動画のように、メッセージ、2択、3択、テキスト入力、リストから選択の4つを作ってみました。
この4つがあればほとんどのケースをカバーできると思います。

広告


JavaFXダイアログの種類

3つの種類が用意されています。
Alert
TextInputDialog
ChoiceDialog
Alertが普通のタイプで、最もよく使うと思います。初期化時に並べるボタンを指定します。
サンプルではメッセージ、2択、3択のダイアログを作っていますが、Alertに設置するボタン楽天 の数を変えることで実現しています。
TextInputDialogはテキスト入力して、このテキストをプログラムに渡すもの。
ChoiceDialogはリストから1つ選ぶタイプです。

ダイアログ位置の設定

親ウインドウを動かしてからダイアログを表示させると、ダイアログが親から離れた場所に表示されてしまいます。
Stageの位置情報をDialogに渡してあげれば、Stage上にダイアログを表示させることができます。

 dialog.setX( stage.getX()+stage.getWidth()/2. -50 );
 dialog.setY( stage.getY()+stage.getHeight()/2. -50 );


サンプルプログラム

上の動画のソースは下記の通り。

package tomojavalib.swingfx;

import java.util.ArrayList;
import java.util.Optional;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ChoiceDialog;
import javafx.scene.control.TextInputDialog;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.*;
import javafx.stage.Stage;

public class DialogFX extends Application {
Stage stage = null;
Button[] b = new Button[5];

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

 @Override
 public void start(Stage stage) throws Exception {
  this.stage = stage;
  stage.setTitle("JavaFX楽天 ");
  Vbox pane = new Vbox();
  Scene scene = new Scene(pane, 320, 240);
  b[0] = new Button("メッセージ");
  b[1] = new Button("二択");
  b[2] = new Button("三択");
  b[3] = new Button("テキスト入力");
  b[4] = new Button("選択");
  pane.getChildren().addAll( b );
  this.seEvent();
  stage.setScene(scene);
  stage.show();
 }

private void seEvent(){
 EventHandler<MouseEvent> mouseClick = ( event ) -> this.mouseClick( event );
 for(int i=0;i<b.length;i++){
  b[i].addEventHandler( MouseEvent.MOUSE_CLICKED , mouseClick );
 }
}

private void mouseClick( MouseEvent event ){
Button button = (Button)event.getSource();
String s = button.getText();
if( s.equals("メッセージ") ){
 Alert dialog = new Alert( AlertType.INFORMATION , "ご飯の時間です"  , ButtonType.YES );
 dialog.showAndWait();
}else if( s.equals("二択") ){
 //二択のダイアログ
 Alert dialog = new Alert( AlertType.NONE , "終了しますか?" , ButtonType.YES , ButtonType.NO );
 dialog.setX( stage.getX()+stage.getWidth()/2. -50 );
 dialog.setY( stage.getY()+stage.getHeight()/2. -50 );
 Optional<ButtonType> result = dialog.showAndWait();
 if (result.isPresent() && result.get() == ButtonType.YES) { System.exit(0); } else{ event.consume();}
}else if( s.equals("三択") ){
 //三択のダイアログ
 Alert dialog = new Alert( AlertType.NONE , "終了しますか?" , ButtonType.YES , ButtonType.NO , ButtonType.CANCEL );
 dialog.setX( stage.getX()+stage.getWidth()/2. -50 );
 dialog.setY( stage.getY()+stage.getHeight()/2. -50 );
 Optional<ButtonType> result = dialog.showAndWait();
 if (result.isPresent() && result.get() == ButtonType.YES) {
  System.exit(0);
 } else if (result.isPresent() && result.get() == ButtonType.NO) {
  event.consume();
 } else if (result.isPresent() && result.get() == ButtonType.CANCEL) {
  event.consume();
 }
}else if( s.equals("テキスト入力") ){
 //テキスト入力ダイアログ
 TextInputDialog dialog  = new TextInputDialog( "テキストを入力してください" );
 Optional<String> result = dialog.showAndWait();
 b[3].setText( result.get() );
}else if( s.equals("選択") ){
//選択ダイアログ
 ArrayList<String> list = new ArrayList<String>();
  list.add( "アヒル" );
  list.add( "イチゴ" );
  list.add( "ウドン" );
 ChoiceDialog<String> dialog = new ChoiceDialog<String>( list.get( 0 ) , list );
 Optional<String> result = dialog.showAndWait();
  b[4].setText( result.get() );
}
}

}

最終更新日: 2017-11-09 16:08:29

ともさんのHP >プロブラミング >JavaFX >ダイアログ

このエントリーをはてなブックマークに追加
広告
おすすめ記事
新着ページ

JavaFXでPopupMenu  
メンズパンツとジーンズの型紙ダウンロード  
柿の木、剪定前後の比較写真  
メニューバー  
原型型紙のダウンロード  
3D-CADでカバンの型紙  
和風コートの作り方  
ボタンやラベルの修飾方法  
アイコンの差し替え  
男性用原型製図のしかた  
今年も柿の剪定が終了  

私の他のサイト

ともさんの箱庭(ブログ)
家庭菜園
3D-CAD
洋裁CAD

いいねなど

 RSS 
PageSpeedInsights
html5チェック

Author: Tomoyuki Ito

このサイトの文章・写真の無断転載を禁じます