2010-09-08 58 views
0

在我的Swing應用程序中,我有一個屏幕上有一堆JTextFields。每個JTextField使用ActionListener的actionPerformed方法將用戶輸入的文本複製到我的數據模型對象。當用戶沒有按回車時從JTextInput捕獲輸入

此方法似乎只在用戶按時輸入。如果用戶不按輸入,而是1)字段之間的標籤或2)使用鼠標單擊一個字段到下一個字段,如何將用戶輸入的文本複製到我的數據模型對象?

回答

1

如果只想當用戶從現場離開時要執行的操作(不是每個字符然後聽取焦點事件:

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

你可能想看看JFormattedTextField,它爲你處理這種事情。

1

muJTextField.addFocusListener(/* focus listener here */);焦點改變

myJTextField.getDocument().addDocumentListener(/* document listener here */);文檔改變

對於文檔的更改使用changeUpdate()

0

與鼠標點擊的問題是,你點擊的組件必須抓住焦點,否則焦點丟失將不會被調用... 我有同樣的問題,所以我用一個計時器來提交我的代碼,每x毫秒...如果你確定當你點擊某個其他組件時會調用焦點丟失,那麼一個簡單的焦點偵聽器將會執行這個技巧...

+0

如果你點擊的組件不抓住焦點,出錯了...... – SimonC 2010-09-09 04:16:59

相關問題