dialog box
は、枠とタイトルのあるポップアップ・ウィンドウです。ダイアログ・ボックスは通常、ユーザーが入力を行うために使用されます。
「新規ダイアログ」ダイアログでは、Dialog
またはJDialog
を拡張する新規クラスが作成され、現在のプロジェクトに追加されます。必要なimport文が追加され、次の処理も行われます。
jbInit()
メソッドを作成。ここには、JDeveloperによってsetterプロパティと、Javaビジュアル・エディタで使用する他の初期化コードが置かれます。jbInit()
メソッドは、いずれかのコンストラクタを使用する際にコールされます。
ダイアログ・ボックスを追加後、Javaビジュアル・エディタを使用してダイアログを直接設計できます。このようにして、新規のダイアログ・ボックスにボタンやその他のコントロールを追加します。
ダイアログ・ボックスを作成するには、次のようにします。
「新規ダイアログ」ダイアログを起動するには、「ファイル」->「新規」を選択します。
「カテゴリ」リストで「Client Tier」を開き、「Swing/AWT」を選択します。
「項目」リストで「ダイアログ」を選択し、「OK」をクリックして「新規ダイアログ」ダイアログを起動します。
java.awt.Dialog
またはjavax.swing.JDialog
のいずれを拡張するか選択します。
ダイアログ・ボックスが、ナビゲーション・ウィンドウに .java
ソース・ファイルとして表示されます。
JDeveloperでダイアログ・ボックスを表示するには、次のようにします。
コンポーネント・パレットやプロパティ・インスペクタなどの対話型のUI設計ツールを使用するには、ナビゲータでファイルを右クリックして「開く」を選択します。
ソース・コードを直接カスタマイズするには、ナビゲータでファイルを右クリックして「開く」を選択します。
Beanでないダイアログ・ボックスの使用方法
ダイアログ・ボックスの作成とUIの設計が終了すると、プログラム内のUIからこのダイアログ・ボックスをテストまたは使用します。これは次のように行います。
Frame
パラメータとして機能するFrame
にアクセスできるコード内の場所から、ダイアログ・クラスをインスタンス化します。 この典型的な例として、ダイアログ・ボックスを表示するButton
やMenuItem
などのUIを現在設計中のFrame
があります。 アプレットでは、アプレット上で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プロパティを使用してダイアログ・ボックスから情報を取得するコードを、イベント処理メソッド内に置く必要があります。
Copyright © 1997, 2004, Oracle Corporation. All rights reserved.