0

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

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

4

3 回答 3

1

muJTextField.addFocusListener(/* focus listener here */);焦点变化

myJTextField.getDocument().addDocumentListener(/* document listener here */);用于文件更改

对于文档更改,请使用changeUpdate()

于 2010-09-08T06:11:43.887 回答
1

如果您只想在用户离开字段时执行操作(而不是在字段中的每个字符发生变化时),请侦听焦点事件:

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

您可能想看看JFormattedTextField为您处理这种事情。

于 2010-09-08T06:18:03.970 回答
0

mouseclick 的问题是,您单击的组件必须获取焦点,否则不会调用焦点丢失...我遇到了同样的问题,所以我使用了一个计时器来提交我的代码,每 x 毫秒...如果你确保当您单击其他组件时会调用焦点丢失,一个简单的焦点侦听器就可以解决问题......

于 2010-09-08T13:29:45.387 回答