• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:InputVerifierのフォーカス遷移について)

InputVerifierのフォーカス遷移について

このQ&Aのポイント
  • 正しい入力を促すため、テキストフィールドにInputVerifierを設定しました。
  • Tabで遷移を行った場合、入力が"OK"の場合は遷移先へ遷移し、入力が"OK"以外の場合は遷移しない。
  • Tab+Shiftで遷移を行った場合、入力が"OK"の場合は遷移先へ遷移し、入力が"OK"以外の場合はフォーカスがどこかへ行ってしまいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • teketon
  • ベストアンサー率65% (141/215)
回答No.1

参考URLの件みたいですね。バグは修正済みのとのことですが、当方の環境では発生してます。 Windows7 64bit java version "1.7.0_45" Java(TM) SE Runtime Environment (build 1.7.0_45-b18) Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode) ---- shift+tab(Backward)時だけ失敗するので、その時Focusを当てるように修正しました。 当然ですが、Backwardのverifyに失敗時だけ、FocusLostとFocusGainedイベントが発行されてしまいます。 (Forwardのverify失敗時はFocusLost、FocusGainedイベントは発生しません) class PassVerifier extends InputVerifier { public boolean verify(JComponent input) { JTextField tf = (JTextField) input; return "OK".equals(tf.getText()); } @Override public boolean shouldYieldFocus(final JComponent input) { boolean valid = verify(input); if(!valid){ EventQueue.invokeLater(new Runnable() { @Override public void run() { input.grabFocus(); } }); } return valid; } }

参考URL:
http://stackoverflow.com/questions/10529618/java-lostfocus-and-inputverifier-moving-in-reverse-tab-order
noname#251012
質問者

お礼

バグだったのですか・・・ そこまでjavaに精通していないので仕様だと思っていましたw ------- EventQueue.invokeLater(new Runnable() { @Override public void run() { input.grabFocus(); } } 上記を使用することで実装出来ました。 ありがとうございました。

関連するQ&A