在我的Swing應用程序中,我有一個屏幕上有一堆JTextFields。每個JTextField使用ActionListener的actionPerformed方法將用戶輸入的文本複製到我的數據模型對象。當用戶沒有按回車時從JTextInput捕獲輸入
此方法似乎只在用戶按時輸入。如果用戶不按輸入,而是1)字段之間的標籤或2)使用鼠標單擊一個字段到下一個字段,如何將用戶輸入的文本複製到我的數據模型對象?
在我的Swing應用程序中,我有一個屏幕上有一堆JTextFields。每個JTextField使用ActionListener的actionPerformed方法將用戶輸入的文本複製到我的數據模型對象。當用戶沒有按回車時從JTextInput捕獲輸入
此方法似乎只在用戶按時輸入。如果用戶不按輸入,而是1)字段之間的標籤或2)使用鼠標單擊一個字段到下一個字段,如何將用戶輸入的文本複製到我的數據模型對象?
如果只想當用戶從現場離開時要執行的操作(不是每個字符然後聽取焦點事件:
JTextField textField = ...
textField.addFocusListener(new FocusAdapter(){ void focusLost(FocusEvent e)
{ doSomething(); });
你可能想看看JFormattedTextField,它爲你處理這種事情。
muJTextField.addFocusListener(/* focus listener here */);
焦點改變
myJTextField.getDocument().addDocumentListener(/* document listener here */);
文檔改變
對於文檔的更改使用changeUpdate()
與鼠標點擊的問題是,你點擊的組件必須抓住焦點,否則焦點丟失將不會被調用... 我有同樣的問題,所以我用一個計時器來提交我的代碼,每x毫秒...如果你確定當你點擊某個其他組件時會調用焦點丟失,那麼一個簡單的焦點偵聽器將會執行這個技巧...
如果你點擊的組件不抓住焦點,出錯了...... – SimonC 2010-09-09 04:16:59