親を非表示に設定する前に、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);
が新しく作成されたものとして表示されるようになりました。ついに.. :)