1

ユーザーがをクリックしたときに[ファイルを開く]ダイアログボックスを表示したいJTextField。次のコードを追加したとき(今は削除しました)...

 this.textField.addFocusListener(new FocusListener() {

    public void focusGained(FocusEvent event) {
      // Show the Open File dialog box.
      // Same as lines 86-93 in the link below.
    }

    public void focusLost(FocusEvent event) {
      // Do nothing.
    }

 }

(ここにコードを記述します。)

...ユーザーがファイルを選択して[OK]ボタンをクリックすると、フォーカスがまだにあると想定しているため、[ファイルを開く]ダイアログボックスが再び表示されるようJTextFieldです。ユーザーが[キャンセル]ボタンをクリックした場合も同じことが起こります。

この問題を解決するにはどうすればよいですか?あなたのアドバイスは大歓迎です!

4

1 に答える 1

2

問題は、ファイルチューザーダイアログが表示されたときにフォーカスがかかることです。それが閉じると(私は推測します)、テキストフィールドに再度フォーカスを合わせます(またはフォーカスマネージャーがフォーカスを戻します)。これにより、フォーカスイベントが再びトリガーされます。

私は2つの解決策を考えることができます。1つは、ユーザーがフィールドを「クリック」したときにのみファイルダイアログを表示する場合は、代わりにマウスリスナーを使用します。

2つ目は、内部フラグを使用して、現在の動作状態を監視することです。イベント処理の性質を考えると、これを実装するのはより難しいかもしれません

于 2012-07-22T06:55:36.843 に答える