当用户未按Enter键时从JTextInput捕获输入

时间:2010-09-08 05:57:35

标签: java swing jtextfield

在我的Swing应用程序中,我有一个屏幕,其中包含一堆JTextField。每个JTextField都使用ActionListener的actionPerformed方法将用户输入的文本复制到我的数据模型对象。

如果用户按 Enter ,似乎只调用此方法。如果用户没有按 Enter ,而是1)字段之间的选项卡或2)使用鼠标从一个字段单击到下一个字段,如何将用户输入的文本复制到我的数据模型对象?

3 个答案:

答案 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毫秒...如果你确定当你点击其他组件时会调用焦点丢失,一个简单的焦点监听器就会做到这一点......