我的窗口中有许多组件,其中大多数是JTextFields。为了节省用户输入数据的时间,我尝试在填充时解析第一个JTextField的内容,并将建议的值放入后续的JTextField中。
我在第一个JTextField中添加了一个FocusListener,然后在focusLost()中检索其内容,然后设置后续JTextField的内容。第一次使用该应用程序时,此方法可以正常工作。但是,在后续任务中(即在处理完所有数据并清除字段之后),通常(但并非总是)失败。由于焦点问题,调试很困难,因此我改用日志记录,可以看到在失败的情况下,第一个JTextField的getText()方法返回null。这一定是时间问题,但我看不到解决方法。
focusLost()方法开始...
@Override
public void focusLost(FocusEvent e) {
// On losing focus of the title field attempt to populate all the other
// resource detail fields
Component rawComponent = e.getComponent();
if (this.resourceTitleTextField == rawComponent) {
JTextField component = (JTextField) rawComponent;
String title = component.getText();
LOGGER.info("title = " + title);