0

私の Swing アプリには、多数の JTextField を含む画面があります。各 JTextField は、ActionListener の actionPerformed メソッドを使用して、ユーザーが入力したテキストをデータ モデル オブジェクトにコピーします。

このメソッドは、ユーザーが を押した場合にのみ呼び出されるようEnterです。Enterユーザーが押すのではなく、1) フィールド間のタブ、または 2) マウスを使用して 1 つのフィールドから次のフィールドをクリックする場合、ユーザーが入力したテキストをデータ モデル オブジェクトにコピーするにはどうすればよいですか?

4

3 に答える 3

1

muJTextField.addFocusListener(/* focus listener here */);フォーカス変更用

myJTextField.getDocument().addDocumentListener(/* document listener here */);文書変更のため

文書変更の場合changeUpdate()

于 2010-09-08T06:11:43.887 に答える
1

ユーザーがフィールドから離れたときにのみアクションを実行する場合 (フィールド内で文字が変化するたびにではなく)、フォーカス イベントをリッスンします。

JTextField textField = ...
textField.addFocusListener(new FocusAdapter(){ void focusLost(FocusEvent e) 
  { doSomething(); } );

この種のことを処理するJFormattedTextFieldを見てみるとよいでしょう。

于 2010-09-08T06:18:03.970 に答える
0

マウスクリックの問題は、クリックしたコンポーネントがフォーカスを取得する必要があることです。そうしないと、失われたフォーカスが呼び出されません...同じ問題があったため、タイマーを使用してxミリ秒ごとにコードをコミットしました...他のコンポーネントをクリックするとフォーカスが失われることを確認してください。単純なフォーカスリスナーがそのトリックを行います...

于 2010-09-08T13:29:45.387 に答える