ダイアログ・ボックスは、枠とタイトルのあるポップアップ・ウィンドウです。ダイアログ・ボックスは通常、ユーザーが入力を行うために使用されます。
「新規ダイアログ」ダイアログでは、Dialog
またはJDialog
を拡張する新規クラスが作成され、現在のプロジェクトに追加されます。必要なimport文が追加され、次の処理も行われます。
jbInit()
メソッドを作成。ここには、JDeveloperによってsetterプロパティと、UIエディタで使用する他の初期化コードが置かれます。jbInit()
メソッドは、いずれかのコンストラクタを使用する際にコールされます。
ダイアログ・ボックスを追加したら、UIエディタを使用してダイアログを直接設計できます。このようにして、新規のダイアログ・ボックスにボタンやその他のコントロールを追加します。
ダイアログ・ボックスを作成するには、次のようにします。
「新規ダイアログ」ダイアログが表示されます。
java.awt.Dialog
またはjavax.swing.JDialog
のいずれを拡張するか選択します。
ダイアログ・ボックスが、ナビゲーション・ウィンドウに .java
ソース・ファイルとして表示されます。
JDeveloperでダイアログ・ボックスを表示するには、次のようにします。
コンポーネント・パレットやプロパティ・インスペクタなどの対話型のUI設計ツールを使用するには、ナビゲータでファイルを右クリックして「UIエディタ」を選択します。
ソース・コードを直接カスタマイズするには、ナビゲータでファイルを右クリックして「コード・エディタ」を選択します。
Beanでないダイアログ・ボックスの使用方法
ダイアログ・ボックスの作成とUIの設計が終了したら、プログラム内のUIからこのダイアログ・ボックスをテストまたは使用します。これは次のように行います。
Frame
パラメータとして機能するFrame
にアクセスできるコード内の場所から、ダイアログ・クラスをインスタンス化します。この典型的な例として、ダイアログ・ボックスを表示するためにFrame
に設計されたButton
やMenuItem
があります。アプレットでは、アプレット上でgetParent()
をコールしてFrame
を取得できます。
モードレス・ダイアログ・ボックス(次の例ではdialog1
)の場合、次のようにパラメータが1つのみ(親Frame
)のコンストラクタを使用できます。
Dialog1 dialog1=new Dialog1(this);
モーダル・ダイアログ・ボックスの場合には、次の例のように、boolean modal
パラメータをtrue
に設定したコンストラクタを使用する必要があります。
Dialog1 dialog1=new Dialog1(this, true);
この行は、クラスの最初にインスタンス変数として置くことも(その場合、ダイアログ・ボックスはFrame
の構築中にインスタンス化され、再利用可能になる)、あるいはダイアログ・ボックスを起動するボタンに対するactionPerformed
イベント・ハンドラの中に置くことも(その場合、ダイアログ・ボックスの新しいインスタンスは、ボタンが押されるたびに作成される)できます。どちらの場合も、この行によってダイアログ・ボックスがインスタンス化されますが、まだ表示はされません。
(ダイアログがBeanの場合には、コンストラクタにframe
をパラメータとして渡すのではなく、frame
プロパティを設定して親フレームを指定する必要があります。)
actionPerformed
のイベント中にダイアログ・ボックスを表示させるために、イベント・ハンドラに次のようなコード行を挿入します。
dialog1.show();
show()
メソッド・コールの直後に処理可能です。show()
は、モーダル・ダイアログ・ボックスが消えるまで戻されないためです。「OK」ボタンと「取消」ボタンのどちらが押されたかを判別するには、resultプロパティを使用します。
show()
はただちに戻されます。そのため、各ボタンに対して、ダイアログ・クラス自体でイベントを公開する必要があります。ダイアログ・ボックスを使用する際には、ダイアログのイベントにリスナーを登録し、getterプロパティを使用してダイアログ・ボックスから情報を取得するコードを、イベント処理メソッド内に置く必要があります。