ダイアログ・ボックスの作成

ダイアログ・ボックスは、枠とタイトルのあるポップアップ・ウィンドウです。ダイアログ・ボックスは通常、ユーザーが入力を行うために使用されます。

「新規ダイアログ」ダイアログでは、DialogまたはJDialogを拡張する新規クラスが作成され、現在のプロジェクトに追加されます。必要なimport文が追加され、次の処理も行われます。

ダイアログ・ボックスを追加したら、UIエディタを使用してダイアログを直接設計できます。このようにして、新規のダイアログ・ボックスにボタンやその他のコントロールを追加します。

ダイアログ・ボックスを作成するには、次のようにします。

  1. プロジェクトを開くか、または作成します。
  2. 「ファイル」->「新規」を選択します。
  3. 「Client Tier」「Swing/AWT」カテゴリを選択します。
  4. 「ダイアログ」をダブルクリックします。
  5. 「新規ダイアログ」ダイアログが表示されます。

  6. 「新規ダイアログ」ダイアログで、ダイアログ・ボックスのパッケージおよびクラスの名前を入力します。ファイル名は、クラスと同じ名前が割り当てられ、パッケージ・ディレクトリに保存されるため、自動的に入力されます。
  7. java.awt.Dialogまたはjavax.swing.JDialogのいずれを拡張するか選択します。
  8. 「OK」をクリックして、ダイアログ・ボックスおよびそのソース・コードを作成します。

    ダイアログ・ボックスが、ナビゲーション・ウィンドウに .javaソース・ファイルとして表示されます。

JDeveloperでダイアログ・ボックスを表示するには、次のようにします。

Beanでないダイアログ・ボックスの使用方法

ダイアログ・ボックスの作成とUIの設計が終了したら、プログラム内のUIからこのダイアログ・ボックスをテストまたは使用します。これは次のように行います。

  1. ダイアログのコンストラクタで、親Frameパラメータとして機能するFrameにアクセスできるコード内の場所から、ダイアログ・クラスをインスタンス化します。この典型的な例として、ダイアログ・ボックスを表示するためにFrameに設計されたButtonMenuItemがあります。アプレットでは、アプレット上でgetParent()をコールしてFrameを取得できます。

    モードレス・ダイアログ・ボックス(次の例ではdialog1)の場合、次のようにパラメータが1つのみ(親Frame)のコンストラクタを使用できます。

    Dialog1 dialog1=new Dialog1(this);

    モーダル・ダイアログ・ボックスの場合には、次の例のように、boolean modalパラメータをtrueに設定したコンストラクタを使用する必要があります。

    Dialog1 dialog1=new Dialog1(this, true);

    この行は、クラスの最初にインスタンス変数として置くことも(その場合、ダイアログ・ボックスはFrameの構築中にインスタンス化され、再利用可能になる)、あるいはダイアログ・ボックスを起動するボタンに対するactionPerformedイベント・ハンドラの中に置くことも(その場合、ダイアログ・ボックスの新しいインスタンスは、ボタンが押されるたびに作成される)できます。どちらの場合も、この行によってダイアログ・ボックスがインスタンス化されますが、まだ表示はされません。

    (ダイアログがBeanの場合には、コンストラクタにframeをパラメータとして渡すのではなく、frameプロパティを設定して親フレームを指定する必要があります。)

  2. インスタンス化したダイアログ・ボックスを表示可能にする前に、ダイアログ・ボックスの各フィールドで表示されるデフォルト値を設定します。ダイアログをBeanにする場合には、ダイアログ・ボックスの各フィールドを、プロパティとしてアクセス可能にしておく必要があります。これには、ダイアログ・クラスでgetterメソッドおよびsetterメソッドを定義します。
  3. 次に、actionPerformedのイベント中にダイアログ・ボックスを表示させるために、イベント・ハンドラに次のようなコード行を挿入します。

    dialog1.show();

  4. ユーザーが「OK」ボタン(または、モードレス・ダイアログ・ボックスの「適用」ボタン)を押したときに、そのダイアログ・ボックスを使用しているコードは、ダイアログのgetterプロパティをコールし、ユーザーが入力した情報をダイアログから読み出し、その情報を処理する必要があります。

コンテナについて