2011-08-25 46 views
2

我有一個框架,上面有一些JTextFields。當用戶從JTextField退出時,我在FocusTraversalPolicy中執行定製邏輯,該定製邏輯設置了一些屬性,並根據它們決定聚焦下一步應該在哪裏。到現在爲止還挺好。Swing focus lost inputrifrifier

但我想這自定義邏輯執行每次JTextField失去焦點(在InputVerifier,因爲也驗證它)。

現在的問題和問題:如果用戶離開字段的鼠標InputVerifier將被觸發,一切都會好起來的。但是,如果用戶按TABFocusTraversalPolicyInputVerifier將被觸發,而定製邏輯將被執行兩次,這是我不想要的。如何在InputVerifier中檢測到TAB已被按下並且不執行任何操作?僅當字段留有鼠標時,我想在InputVerifier中執行定製邏輯。還是有更好的解決方案?

希望我的問題很清楚。

問候,斯托

+0

hmmm可能還有(JTextFields)另一個Listener(Focus/Document)在同一時間內移除並添加如果需要,如何實現notify();請檢查並閱讀http://tips4java.wordpress.com/?s=focus,特別是http://tips4java.wordpress.com/2010/03/14/dialog-focus/,http://tips4java.wordpress.com/ 2010/05/09/scrolling-a-form /,http://tips4java.wordpress.com/2010/02/21/formatted-text-field-tips/ – mKorbel

回答

2

我結束瞭如果執行定製邏輯設定從FocusTraversalPolicy一個boolean標誌。然後在InputVerifier,如果它已經執行,我不會再執行它。然後我重置旗幟。