今回は Input Dialog。 Input Dialog はユーザーに「文字列の入力」もしくは「項目の選択」を求めるダイアログです。
Input Dialog
Input Dialog を表示させるには javax.swing.JOptionPane の static メソッド showInputDialog() メソッドを使用します。 このメソッドのシグニチャはこんな感じ:
static String showInputDialog(Object message) static String showInputDialog(Object message, Object initialSelectionValue) static String showInputDialog(Component parent, Object message) static String showInputDialog(Component parent, Object message, Object initialSelectionValue) static String showInputDialog(Component parent, Object message, String title, int messageType) static Object showInputDialog(Component parent, Object message, String title, int messageType, Icon icon, Object[] selectionValues, Object initialSelectionValue)
1番目、2番目は親コンポーネントを指定しないものです。 それぞれ3番目、4番目で parent に null を指定したものと同じかと。 以下では省略。 引数の詳細はこんな感じ:
引数 | 型 | 必須 | デフォルト値 | 説明 |
---|---|---|---|---|
parent | java.awt.Component | No | null | 親となる GUI コンポーネント |
message | Object | Yes | - | メッセージ |
title | String | No | "入力" | ダイアログのタイトル |
messageType | int | No | JOptionPane. QUESTION_MESSAGE |
メッセージ・タイプ |
icon | javax.swing.Icon | No | アイコン | |
selectionValues | Object[] | No | 選択可能な項目 | |
initialSelectionValue | Object | No | selectionValues[0] | 初期に選択される項目 |
messageType に関しては以前の記事参照。
サンプルコード
ではサンプルコード。 次の2つに分けて見ていきます:
- 文字列を入力するダイアログ
- 項目を選択するダイアログ
文字列を入力するダイアログ
まずは文字列を入力するダイアログ。
import javax.swing.*; import static javax.swing.JOptionPane.*; JFrame parent = ...; // 下図 上 result = JOptionPane.showInputDialog(parent, "Here is a message."); // 下図 中 result = JOptionPane.showInputDialog(parent, "Here is a message.", "Initial Selection Value"); // 下図 下 result = JOptionPane.showInputDialog(parent, "Here is a message.", "Input Dialog", INFORMATION_MESSAGE);
同様のダイアログを Groovy + SwingBuilder を使って表示させてみましょう。 上図一番下のダイアログを表示させるには下記のようにします(初期値の文字列も指定しています):
import groovy.swing.SwingBuilder import static javax.swing.JOptionPane.* JFrame parent = ... def pane = new SwingBuilder().optionPane( message:'Here is a message.', messageType:INFORMATION_MESSAGE, optionType:OK_CANCEL_OPTION, wantsInput:true, initialSelectionValue:'Initial Selection Value') pane.createDialog(parent, 'Input Dialog').visible = true def result = pane.inputValue
入力された値の取得するには inputValue プロパティを読み取ります。 「了解」、「取消し」、「×」のいずれの操作がされたかは前回と同じく value プロパティによって取得します。
項目を選択するダイアログ
次は項目を選択するダイアログ。 この記事最初に載せた showInputDialog() メソッドのうち、一番下のものを使います。
import javax.swing.*; import static javax.swing.JOptionPane.*; JFrame parent = ...; Object[] selectionValues = {"Java", "Groovy", "Scala", "Clojure", "Vistage"}; Object result = JOptionPane.showInputDialog(parent, "Here is a message.", "Input Dialog", INFORMATION_MESSAGE, null, selectionValues, "Java");
Java での Object の配列の作成ってこんなんであってたっけ? まぁ、ともかく実行結果はこんな感じ:
Groovy + SwingBuilder で書くと以下のようになります:
import groovy.swing.SwingBuilder import static javax.swing.JOptionPane.* JFrame parent = ... def items = ['Java', 'Groovy', 'Scala', 'Clojure', 'Vistage'] def pane = new SwingBuilder().optionPane( message:'Here is a message.', messageType:INFORMATION_MESSAGE, optionType:OK_CANCEL_OPTION, selectionValues:items, initialSelectionValue:'Java') pane.createDialog(parent, 'Input Dialog').visible = true def result = pane.inputValue
選択された値の取得方法は「文字列を入力するダイアログ」の場合と同じです。
Java Swing Hacks ―今日から使える驚きのGUIプログラミング集
- 作者: Joshua Marinacci,Chris Adamson,神戸博之(監訳),島田秋雄(監訳),加藤慶彦
- 出版社/メーカー: オライリージャパン
- 発売日: 2006/04/01
- メディア: 単行本(ソフトカバー)
- 購入: 7人 クリック: 100回
- この商品を含むブログ (38件) を見る