在我的Swing应用程序中,我有一个屏幕,其中包含一堆JTextField。每个JTextField都使用ActionListener的actionPerformed方法将用户输入的文本复制到我的数据模型对象。
如果用户按 Enter ,似乎只调用此方法。如果用户没有按 Enter ,而是1)字段之间的选项卡或2)使用鼠标从一个字段单击到下一个字段,如何将用户输入的文本复制到我的数据模型对象?
答案 0 :(得分:1)
muJTextField.addFocusListener(/* focus listener here */);
进行焦点变更
myJTextField.getDocument().addDocumentListener(/* document listener here */);
用于文档更改
对于文档更改,请使用changeUpdate()
答案 1 :(得分:1)
如果您只想在用户离开字段时执行操作(而不是在字段中更改的每个字符上),请听取焦点事件:
JTextField textField = ...
textField.addFocusListener(new FocusAdapter(){ void focusLost(FocusEvent e)
{ doSomething(); } );
您可能需要查看为您处理此类事情的JFormattedTextField。
答案 2 :(得分:0)
鼠标点击的问题是,你点击的组件必须抓住焦点,否则焦点丢失将不会被调用... 我有同样的问题,所以我用一个计时器来提交我的代码,每隔x毫秒...如果你确定当你点击其他组件时会调用焦点丢失,一个简单的焦点监听器就会做到这一点......