モジュール java.desktop
パッケージ javax.swing

クラスJOptionPane

java.lang.Object
すべての実装されたインタフェース:
ImageObserver, MenuContainer, Serializable, Accessible

@JavaBean(defaultProperty="UI", description="A component which implements standard dialog box controls.") public class JOptionPane extends JComponent implements Accessible
JOptionPaneは、ユーザーに値の入力を求めたり、何らかの情報を通知したりするための標準のダイアログ・ボックスを容易にポップアップできるようにします。 JOptionPaneの使用方法については、「The Java Tutorial」の「How to Make Dialogs」を参照してください。

メソッドの数が多いためにJOptionPaneクラスは複雑そうに見えますが、このクラスの使用法はほとんどすべて、次に示す静的なshowXxxDialogメソッドのいずれかに対するオンライン呼出しです。

JOptionPaneの一般的なメソッド名とその説明
メソッド名 説明
showConfirmDialog yes/no/cancelなどの確認の要求。
showInputDialog 入力プロンプト。
showMessageDialog 発生したことについてのユーザーへのメッセージ。
showOptionDialog 以上の3つを合わせたもの。
以上の3つの各メソッドは、内部フレームを使用してダイアログ・ボックスを保持するshowInternalXXXの特長を備えています(JInternalFrameを参照)。 異なるパラメータ・リストを使用する基本メソッドをオーバーロードしたバージョンなど、いくつかの簡易メソッドも定義されています。

すべてのダイアログはモーダルです。 showXxxDialogメソッドは、ユーザーの対話が終了するまで呼出し側をブロックします。

共通ダイアログ
アイコン message
入力値
オプション・ボタン
これらのダイアログ・ボックスの基本的な外観は、一般的には上の図と似ていますが、さまざまなルック・アンド・フィールが最終的な結果に最終的に責任を負います。 特に、ルック・アンド・フィールはオプション・ペインのComponentOrientationプロパティに適応するようにレイアウトを調整します。

パラメータ:
これらのメソッドに対するパラメータは一貫性のあるパターンになります。

parentComponent
このダイアログ・ボックスの親となるComponentを定義します。 使用方法は2つあります。ダイアログ・ボックスを格納するFrameはダイアログ・ボックスの親Frameとして使用されます。画面座標はダイアログ・ボックスの配置に使用されます。 通常、ダイアログ・ボックスはコンポーネントのすぐ下に配置されます。 このパラメータがnullの場合、親としてデフォルトのFrameが使用され、ダイアログは(L&Fに応じて)画面の中央に配置されます。
message
ダイアログ・ボックスに表示する説明メッセージです。 一般的には、メッセージは単純なStringまたはString型の定数です。 ただし、このパラメータの型は実際にはObjectです。 解釈は型によって異なります。
Object[]
オブジェクトの配列は、垂直スタック方式で配置された一連のメッセージ(1オブジェクトにつき1メッセージ)として解釈されます。 解釈は再帰的に行われます。配列内の各オブジェクトは、その型に応じて解釈されます。
コンポーネント
Componentはダイアログに表示されます。
アイコン
IconJLabelにラップされてダイアログに表示されます。
その他
オブジェクトは、toStringメソッドを呼び出すことにより、Stringに変換されます。 結果はJLabelにラップされて表示されます。
messageType
メッセージのスタイルを定義します。 ルック・アンド・フィールマネージャは、この値に応じてダイアログを個別に配置し、通常はデフォルトのアイコンを用意します。 可能な値は次のとおりです:
  • ERROR_MESSAGE
  • INFORMATION_MESSAGE
  • WARNING_MESSAGE
  • QUESTION_MESSAGE
  • PLAIN_MESSAGE
optionType
ダイアログ・ボックスの下部に表示されるオプション・ボタンのセットを定義します。
  • DEFAULT_OPTION
  • YES_NO_OPTION
  • YES_NO_CANCEL_OPTION
  • OK_CANCEL_OPTION
使用できるのはこれらのオプション・ボタンにかぎりません。 optionsパラメータを使用して任意のボタンを指定することができます。
options
ダイアログ・ボックスの下部に表示されるオプション・ボタンの詳細な説明です。 optionsパラメータの通常の値はStringの配列です。 ただし、パラメータ型はObjectsの配列です。 ボタンはその型に応じて各オブジェクトについて作成されます。
コンポーネント
コンポーネントはボタンの並びに直接追加されます。
アイコン
これをラベルとしてJButtonが生成されます。
other
Objectは、そのtoStringメソッドで文字列に変換され、その結果の文字列はJButtonのラベルとして使用されます。
アイコン
ダイアログ・ボックスに配置される装飾アイコンです。 このデフォルト値はmessageTypeパラメータによって決定されます。
title
ダイアログ・ボックスのタイトルです。
initialValue
デフォルトの選択(入力値)です。

選択が変更されると、setValueが呼び出され、PropertyChangeEventが生成されます。

JOptionPaneがすべての入力setWantsInputに設定されている場合、バウンド・プロパティのJOptionPane.INPUT_VALUE_PROPERTYを待機することによっても、ユーザーが値を入力または選択した時点を判定することができます。

showXxxDialogメソッドの1つが整数を返した場合、その値は次のいずれかになります。

  • YES_OPTION
  • NO_OPTION
  • CANCEL_OPTION
  • OK_OPTION
  • CLOSED_OPTION
例:
「alert」のメッセージを表示するエラー・ダイアログの表示
JOptionPane.showMessageDialog(null, "alert", "alert", JOptionPane.ERROR_MESSAGE);
「information」のメッセージを表示する内部情報ダイアログの表示
 JOptionPane.showInternalMessageDialog(frame, "information",
             "information", JOptionPane.INFORMATION_MESSAGE);
 
オプションの「yes/no」および「choose one」のメッセージを含む情報パネルの表示
JOptionPane.showConfirmDialog(null,
             "choose one", "choose one", JOptionPane.YES_NO_OPTION);
 
オプションの「yes/no/cancel」、「please choose one」のメッセージ、およびタイトル情報を含む内部情報ダイアログの表示
JOptionPane.showInternalConfirmDialog(frame,
             "please choose one", "information",
             JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE);
 
オプションの「OK」、「CANCEL」、タイトルの「Warning」、および「Click OK to continue」のメッセージを含む警告ダイアログの表示
 Object[] options = { "OK", "CANCEL" };
 JOptionPane.showOptionDialog(null, "Click OK to continue", "Warning",
             JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,
             null, options, options[0]);
 
ユーザーにStringの入力を求めるダイアログの表示
String inputValue = JOptionPane.showInputDialog("Please input a value");
ユーザーにStringの選択を求めるダイアログの表示
 Object[] possibleValues = { "First", "Second", "Third" };
Object selectedValue = JOptionPane.showInputDialog(null, "Choose one", "Input", JOptionPane.INFORMATION_MESSAGE, null, possibleValues, possibleValues[0]);
使用法:
JOptionPaneを直接生成して使用するための標準パターンの概略は次のとおりです。
     JOptionPane pane = new JOptionPane(arguments);
     pane.set.Xxxx(...); // Configure
     JDialog dialog = pane.createDialog(parentComponent, title);
     dialog.setVisible(true);
     Object selectedValue = pane.getValue();
     if(selectedValue == null)
       return CLOSED_OPTION;
     //If there is not an array of option buttons:
     if(options == null) {
       if(selectedValue instanceof Integer)
          return ((Integer)selectedValue).intValue();
       return CLOSED_OPTION;
     }
     //If there is an array of option buttons:
     for(int counter = 0, maxCounter = options.length;
        counter < maxCounter; counter++) {
        if(options[counter].equals(selectedValue))
        return counter;
     }
     return CLOSED_OPTION;
 

警告: Swingはスレッドに対して安全ではありません。 詳細は、「Swing's Threading Policy」を参照してください。

警告: このクラスの直列化されたオブジェクトは、今後のSwingリリースと互換ではなくなる予定です。 現在の直列化のサポートは、短期間の格納や、同じバージョンのSwingを実行するアプリケーション間のRMIに適しています。 1.4では、すべてのJavaBeansの長期ストレージのサポートがjava.beansパッケージに追加されました。 XMLEncoderを参照してください。

導入されたバージョン:
1.2
関連項目: