A treta é a seguinte.
Tenho uma aplicação Swing que faz umas operações em background, e enquanto isso mostra uma janela com uma barra de progresso para o usuário.
Mas o que acontece é que quando a operação em backgound acontece muito rapidamente às vezes a janela não fecha, fica cinza.
Todas as operações com swing estão sendo feitas na EDT. Como mandam as boas praticas.
Me parece ser algum bug mesmo. Estou usando Java 6, Linux/Gnome.
A parte boa é que consegui reproduzir o comportamento em um pequeno exemplo:
final JFrame teste = new JFrame("Teste");
Runnable runInit = new Runnable() {
public void run() {
teste.add(new JLabel("olha eu aqui"));
teste.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
teste.setLocationRelativeTo(null);
teste.setSize(300, 300);
}
};
SwingUtilities.invokeLater(runInit);
Runnable runAbre = new Runnable() {
public void run() {
teste.setVisible(true);
}
};
Runnable runFecha = new Runnable() {
public void run() {
teste.setVisible(false);
}
};
for (int ii=0; ii<100; ii++) {
SwingUtilities.invokeLater(runAbre);
SwingUtilities.invokeLater(runFecha);
}
