To avoid any flickers after JWindow is set to visible I've done it this way - but still I see for a few milliseconds some JLabel (tree: JWindow -> JPanel -> JLabel) old text, then text changes to new value (it must be done before JWindow is set to visible):
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();
}
}
}
Maybe I should validate or do something with JLabels also?