Чтобы избежать каких-либо мерцаний после того, как JWindow установлено значение visible, я сделал это так, но все же я вижу в течение нескольких миллисекунд какой-то JLabel (дерево: JWindow -> JPanel -> JLabel) старый текст, затем текст меняется на новое значение (это необходимо сделать до того, как JWindow станет видимым):
public SomeExtendedJWindow extends SomeJWindow {
@Override
public void setVisible(boolean visible) {
if (visible) {
class doGraphics extends SwingWorker<Void, Object> {
@Override
public Void doInBackground() {
validate();
pack();
return null;
}
@Override
protected void done() {
SomeJWindow.super.setVisible(true);
}
}
(new doGraphics()).execute();
}
}
}
Может быть, мне также следует проверить или сделать что-то с JLabels?