JOptionPane 最後のダイアログは Option Dialog。
Option Dialog は前回までにやった3つのダイアログ (Message Dialog, Confirm Dialog, Input Dialog) を統合したようなダイアログです。 引数を変えることによってそれぞれを再現できます。 とは言っても、単なる再現だと敢えてこのメソッドを使用する必要性を感じないので、ここでは Option Dialog だけしか作れないダイアログを見ていきます。
Option Dialog でのみ作成できるダイアログは、オプション(「了解」や「取消し」などのボタン)を独自のものにしたダイアログです(さすが“オプション”ダイアログ)。
Option Dialog
Option Dialog を作成するには JOptionPane クラスの static メソッド showOptionDialog() を使用します。 メソッドのシグニチャは以下のようになってます:
static int showOptionDialog( Component parent, Object message, String title, int optionType, int messageType, Icon icon, Object[] options, Object initialValue)
引数の詳細は下表の通り:
引数 | 型 | 説明 |
---|---|---|
parent | java.awt.Component | 親となる GUI コンポーネント |
message | Object | メッセージ |
title | String | ダイアログのタイトル |
optionType | int | オプションのタイプ |
messageType | int | メッセージタイプ |
icon | javax.swing.Icon | ダイアログに表示されるアイコン |
options | Object[] | オプションの配列 |
initialValue | Object | オプションの初期値 |
optionType はこちら、messageType はこちらを参照のこと。
また、返り値はユーザーが選択した項目の番号 (int 型)です。 ただし、「×」でダイアログを閉じると JOptionPane.CLOSED_OPTION が返されます。
サンプルコード
ではサンプルコード。
import javax.swing.*; import static javax.swing.JOptionPane.*; JFrame parent = ...; Object[] options = {"Java", "Groovy", "Scala", "Clojure", "Vistage"}; int resultIndex = JOptionPane.showOptionDialog(parent, "Here is a message.", "Option Dialog", DEFAULT_OPTION, QUESTION_MESSAGE, null, options, "Java"); if(resultIndex == CLOSED_OPTION) println "CLOSED"; else println options[resultIndex];
引数多いのでちょっと大変。 返り値は選択された項目の番号なので、選択されたオブジェクトを取得するためには、オプションに指定したオブジェクトの配列から対応する要素を取得する必要があります。
Groovy + SwingBuilder で Option Dialog を使うにはこんな感じ:
import groovy.swing.SwingBuilder import static javax.swing.JOptionPane.* def options = ['Java', 'Groovy', 'Scala', 'Clojure', 'Vistage'] def pane = new SwingBuilder().optionPane( message:'Here is a message.', messageType:QUESTION_MESSAGE, options:options, initialSelectionValue:'Java') pane.createDialog(parent, 'Option Dialog').visible = true def result = pane.value println result
options に指定するものは Object の配列でなくリストでもいいようです。 また、この場合は value プロパティによって選択されたオブジェクトを直接取得することができます。 ダイアログを「×」で閉じると null が返されるようです。
Java Swing Hacks ―今日から使える驚きのGUIプログラミング集
- 作者: Joshua Marinacci,Chris Adamson,神戸博之(監訳),島田秋雄(監訳),加藤慶彦
- 出版社/メーカー: オライリージャパン
- 発売日: 2006/04/01
- メディア: 単行本(ソフトカバー)
- 購入: 7人 クリック: 100回
- この商品を含むブログ (38件) を見る