在将父级设置为不可见之前,textField
已设置字段textField.setText(null);
(无需重新绘制),然后问题在于焦点 - 它必须设置为一些初始组件,例如panel.requestFocusInWindow();
. 但重点并不总是及时设置。所以Timer
类解决了这个问题:
textField.setText(null);
panel.requestFocusInWindow();
final int timeout = 5;
Timer timer = new Timer(timeout, new ActionListener() {
int a = 0;
@Override
public void actionPerformed(ActionEvent e) {
if (panel.isFocusOwner() || a > 500) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
setVisible(false);
}
});
((Timer) e.getSource()).stop();
}
a += timeout;
}
});
timer.setRepeats(true);
timer.start();
现在,如果显示为新创建的对话框窗口(父级)setVisible(true);
- 没有闪烁的 textFields 并且焦点正确。最后.. :)