Swing の javax.swing.JOptionPane の使い方が悲しいくらいに分かりにくいので、ちょっと API を整理したりサンプルコードをあれこれ試したりしてみます。
JOptionPane で扱えるダイアログ
JOptionPane で使えるダイアログには以下のような種類があります:
- Message Dialog
- Confirm Dialog
- Input Dialog
- Option Dialog
最後の「Option Dialog」はその他の3種類のダイアログをまとめたようなものです。 また、それぞれに対して "Internal" な同様のダイアログもあります。 これらは使い方が概ね同じなので省略。
今回と次回以降でそれぞれのダイアログをもう少し詳しく見ていきます。 今回は「Message Dialog」。
Message Dialog
Message Dialog はメッセージとアイコンと「了解」ボタンのみがあるダイアログです(画像はサンプルの箇所参照)。 これは JOptionPane の static メソッド showMessageDialog() を使用して表示します。 このメソッドには以下のようなシグニチャがあります:
static void showMessageDialog(Component parent, Object message) static void showMessageDialog(Component parent, Object message, String title, int messageType) static void showMessageDialog(Component parent, Object message, String title, int messageType, Icon icon)
引数を整理するとこんな感じ:
引数 | 型 | 必須 | デフォルト値 | 説明 |
---|---|---|---|---|
parent | java.awt.Component | Yes | - | 親となる GUI コンポーネント |
message | Object | Yes | - | メッセージ |
title | String | No | "メッセージ" | ダイアログのタイトル |
messageType | int | No | JOptionPane. INFORMATION_MESSAGE |
メッセージのタイプ(次節参照) |
icon | java.awt.Icon | No | アイコン |
メッセージ・タイプ
メッセージ・タイプは JOptionPane に定義されている定数 (int) で指定します。 使用できる定数は以下の通り:
- ERROR_MESSAGE
- INFORMATION_MESSAGE
- WARNING_MESSAGE
- QUESTION_MESSAGE
- PLAIN_MESSAGE
これらを指定すると、ダイアログに表示されるアイコンが変わります(たぶんそれだけ)。
サンプルコード
では、サンプルコードと表示されるダイアログを見ていきましょう。
単純なメッセージダイアログ
まずは一番単純なダイアログ。
import javax.swing.JFrame; import javax.swing.JOptionPane; JFrame parent = ...; JOptionPane.showMessageDialog(parent, "Here is an message!");
Look & Feel を変えてますが、あんまり気にせずに。 ちなみに 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) pane.createDialog(parent, 'メッセージ').visible = true
SwingBuilder ではメッセージ・タイプを指定しないとアイコンは表示されないようです。
タイトルとメッセージ・タイプを指定する
さてもう少しだけコードを足して、タイトルとアイコンを変えてみましょう。 アイコンはメッセージ・タイプを指定して変更できます。 コード自体は大して難しくなく、どのメッセージ・タイプがどのアイコンを表示させるかだけを把握しておけばよいかと:
import javax.swing.JFrame; import javax.swing.JOptionPane; import static javax.swing.JOptionPane.*; JFrame parent = ...; JOptionPane.showMessageDialog(parent, "Here is an error message!", "Error Message", ERROR_MESSAGE); JOptionPane.showMessageDialog(parent, "Here is an information message.", "Information Message", INFORMATION_MESSAGE); JOptionPane.showMessageDialog(parent, "Here is a warning message!?", "Warning Message", WARNING_MESSAGE); JOptionPane.showMessageDialog(parent, "Is here a question message?", "Question Message", QUESTION_MESSAGE); JOptionPane.showMessageDialog(parent, "'Here is a plain message.", "Plain Message", PLAIN_MESSAGE);
Groovy + SwingBuilder で、例えばエラーメッセージのダイアログを表示させるには
import groovy.swing.SwingBuilder import static javax.swing.JOptionPane.* JFrame parent = ... def pane = new SwingBuilder().optionPane( message:'Here is an error message!', messageType:ERROR_MESSAGE) def dialog = pane.createDialog(parent, 'Error Message') dialog.visible = true
「単純なメッセージダイアログ」の場合と同じですね。
Java Swing Hacks ―今日から使える驚きのGUIプログラミング集
- 作者: Joshua Marinacci,Chris Adamson,神戸博之(監訳),島田秋雄(監訳),加藤慶彦
- 出版社/メーカー: オライリージャパン
- 発売日: 2006/04/01
- メディア: 単行本(ソフトカバー)
- 購入: 7人 クリック: 100回
- この商品を含むブログ (38件) を見る