-2

私はJavaとSwingが初めてです。jframe を作成し、そこにメニューバーと MenuItem を追加しました。

メニュー項目をクリックすると、jdialog が開きます。これで、jdialog に jtextfield と jlabel が追加されました。今私にとっての問題は、ダイアログが初めて開かれたとき、テキストフィールドが空で、それは正しいことです。ここで jdialog を閉じて再度開きますが、jdialog で空のテキスト フィールドを取得する代わりに、以前に入力したデータを取得します。しかし、それは私には起こっていません...

何が間違っているのかわかりません。他の方法でアプレット/スイングを試したことはありません (これを最初のデモ学習プログラムと考えてください)。

画像 2枚目の画像はこちら

2枚目の画像はこちら

4

1 に答える 1

0

JTextFieldは、クローズの影響を受けていないため、その値を保持しています。JDialog代わりに、親 ( JDialog) が非表示であるため、非表示になっています。

ダイアログを破棄するように設定しても、子コンポーネントは再初期化されないため、値が保持されます。この動作に関する追加情報は、次の場所で入手できます。


これを防止/制御する方法の 1 つは、メソッドWindowEventに必要な機能を追加して提供することで、ダイアログが閉じているときにテキストフィールドを消去するようにダイアログに「通知」することです。windowClosing()

Netbeans gui-builder は、次のようにこれを生成します。

  • 右クリックダイアログ
    • イベント
        • ウィンドウを閉じる

提供:

private void jDialog1WindowClosing(java.awt.event.WindowEvent evt) {                                       
    // TODO add your handling code here:
} 

追加できるもの:textfield.setText("");テキストフィールドをクリアする


もう 1 つの方法は、独自のダイアログを作成し、コンストラクターでコンポーネントを設定することです。新しいインスタンスを作成すると、デフォルト値のコンポーネントが含まれるため、効果的にリセットされます

于 2016-06-20T23:19:46.550 に答える