さまざまなダイアログ

GUIにおいて、オペレータに警告したり、簡単な選択を行わせる時に使うのがダイアログです。
この表示に使うクラスが、JOptionPaneです。構造は次のようになっています。
java.lang.Object
 └java.awt.Component
   └java.awt.Container
     └javax.swing.JComponent
       └javax.swing.JOptionPane
詳細は次のリンクで調べましょう。

メッセージ表示に使われるダイアログ

showMessageDialogメソッドを使います
以下で、メッセージを表示する簡単なダイアログのコードを示します。
ボタンクリックで実行させるイメージで示しています。

	public void actionPerformed(ActionEvent e)
	{
		javax.swing.JOptionPane.showMessageDialog(this, 
			"○×△です\n□△○しましょう。");
	}

thisの部分は、表示させるComponentオブジェクトで(親のオブジェクトと呼ばれます)、 このオブジェクトに重なるようにダイアログが表示されます。 一般にフレームやアプレットを指定しますが、それ以外のGUI部品でも構いません。 nullを指定するとシステムのデフォルト位置へ表示することになります。
このコードのボタン→ で、表示するダイアログを確認ください。
その他、タイトルバーの指定や、アイコンなどを変更できるオーバーロードメソッドが用意されており、次に示します。

	public void actionPerformed(ActionEvent e)
	{
		javax.swing.JOptionPane.showMessageDialog(this,
			"メッセージの表示部分です",
			"タイトルバーの表示部分", 
			javax.swing.JOptionPane.ERROR_MESSAGE);
	}

このコードのボタン→ で、表示するダイアログを確認ください。
ERROR_MESSAGEの部分は、messageTypeで他の使用可能な値は次のとおりです。

INFORMATION_MESSAGE
WARNING_MESSAGE
QUESTION_MESSAGE
PLAIN_MESSAGE

オペレータに選択させるダイアログ

showConfirmDialogメソッドを使います。以下に例を示します。 この戻り値がint型で、それでオペレータが何を選択したか分かります。

	public void actionPerformed(ActionEvent e)
	{
		int rtnVal = javax.swing.JOptionPane.showConfirmDialog(this,
			"メッセージです。\nいずれかを選択ください。",
			"タイトルバーの表示部分",
			javax.swing.JOptionPane.YES_NO_CANCEL_OPTION,
			javax.swing.JOptionPane.QUESTION_MESSAGE
		);
		if(rtnVal == javax.swing.JOptionPane.YES_OPTION ){
			javax.swing.JOptionPane.showMessageDialog(this,"『はい』が選択されました");
		}
	}

上記のクリックイベントの実行ボタンです→ 確認ください。
YES_NO_CANCEL_OPTIONの部分はoptionTypeです。 そして、メソッドの戻り値を定義したクラス変数の一つがYES_OPTIONの部分です。
optionTypeは、他にもいろいろあって、それらに対応する戻り値のクラス変数を以下に示します。

オプションのクラス変数 戻り値のクラス変数
DEFAULT_OPTION オプション配列の添え字,CLOSED_OPTION
YES_NO_OPTION YES_OPTION,NO_OPTION,CLOSED_OPTION
YES_NO_CANCEL_OPTION YES_OPTION,NO_OPTION,CANCEL_OPTION,CLOSED_OPTION
OK_CANCEL_OPTION OK_OPTION,CANCEL_OPTION,CLOSED_OPTION

オペレータにキー入力させるダイアログ

showInputDialogメソッドを使います。以下に例を示します。 この戻り値がString型で、それでオペレータのキー入力情報となります。

	public void actionPerformed(ActionEvent e)
	{
		String rtnVal = javax.swing.JOptionPane.showInputDialog(this,  
			"入力ください",
			"入力欄初期文字列"
		);
		javax.swing.JOptionPane.showMessageDialog(this, "『" + rtnVal + "』が入力されました。");
	}

上記のクリックイベントの実行ボタンです→ 確認ください。

指定配列のボタン列挙を選択させる

showOptionDialogメソッドを使います。以下に例を示します。
DEFAULT_OPTIONを指定して、表示させるボタン用で、オブジェクトの配列を指定します。
なお、ここでは指定のアイコン(Icon.gif:)を利用しています。
そのアイコン用画像ファイルを指定する方法に、java.net.URLクラスを使っています。 このクラスは、リソースなど指定する時に使われ、相対パスを指定する場合、 ネットワークにあるファイルでもローカルでも指定可能な便利なクラスです。
以下では、this.getClass().getResource("ファイル名")で、 このURLオブジェクトを指定していますが、この意味はこのクラスがある所と同じディレクトリから ファイルを取得する指定です。

	public void actionPerformed(ActionEvent e)
	{
		//使用するアイコンの取得(同じtestパッケージ内にあるアイコンファイルより)
		javax.swing.ImageIcon icon = null;
		java.net.URL urlIcon = this.getClass().getResource("Icon.gif");//アイコンファイルから取得
		if (urlIcon != null){
			icon = new javax.swing.ImageIcon(urlIcon);
		}

		//ボタンに表示させる文字列群(ボタンの数だけ順番に並べた配列)
		Object[] options = { "いいです", "止めます", "他を探します", "検討します" };
		
		//ダイアログを生成表示
		int rtnIdx = javax.swing.JOptionPane.showOptionDialog(this,
			"選択ください", 
			"タイトルです",
			javax.swing.JOptionPane.DEFAULT_OPTION,
			javax.swing.JOptionPane.WARNING_MESSAGE,
			icon, //Iconクラスのオブジェクト(nullならデフォルト)
			options, //並べるボタン(String以外のオブジェクトの配列も指定可)
			options[0]	//上記配列内のデフォルトボタン
			);
			
		if (rtnIdx == javax.swing.JOptionPane.CLOSED_OPTION){
			javax.swing.JOptionPane.showMessageDialog(this, "クローズがクリックされました");		
		} else {
			javax.swing.JOptionPane.showMessageDialog(this, 
				rtnIdx + "番目の『" + options [rtnIdx]+ "』が入力されました。");
		}
	}

上記のクリックイベントの実行ボタンです→ 確認ください。

以上の各プログラムを確認したらこのボタンをクリックください。→