2010-09-08 56 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

相关问题