Hola:
Te pego lo que creo que quieres hacer. La primera clase (PruebaContador) es la ventana principal con el boton que lanza el contador y tiene el código que quieres que espere. La segunda clase es el dialogo contador (le he puesto JDialog porque es más correcto que JFrame para ventanas secundarias). Lo he comentado y creo que se entiende, ya me diras si va.
Código Java:
Ver originalpackage com.chuidiang.ejemplos.swing;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
private static final long serialVersionUID = -3776504819992272375L;
public static void main
(String[] args
) { new PruebaContador();
}
public PruebaContador() {
boton.addActionListener(this);
getContentPane().add(boton);
pack();
setDefaultCloseOperation
(JFrame.
EXIT_ON_CLOSE); setLocationRelativeTo(null);
setVisible(true);
}
// Se lanza todo en un hilo para evitar bloquear el hilo de
// despacho de eventos de java (EDT). Si no se hace así, no
// se verá progresar el dialogo contador y se quedara bloqueada
// toda la interfaz de usuario hasta que termine el contador.
public void run() {
DialogoContador dialogoContador = new DialogoContador(
PruebaContador.this);
hilo.start();
// Espera a que termine el hilo contador
try {
hilo.join();
e.printStackTrace();
}
// Codigo que no se ejecuta hasta que se termine el contador
System.
out.
println("Sigue la ejecucion"); }
};
hiloQueEvitaBloquearEDT.start();
};
}
Y el dialogo contador
Código Java:
Ver originalpackage com.chuidiang.ejemplos.swing;
import java.awt.Frame;
import javax.swing.JDialog;
import javax.swing.JLabel;
private static final long serialVersionUID = 4898321869557863294L;
private int contador = 20;
public DialogoContador
(Frame parent
) { // Pasando el frame principal como parent, se evita que el dialogo
// contador se vaya detras de la ventana principal.
super(parent);
label.
setText(Integer.
toString(contador
)); add(label);
pack();
}
public void run() {
setVisible(true);
// Bucle contador
while (contador > 0) {
try {
contador--;
label.
setText(Integer.
toString(contador
)); e.printStackTrace();
}
}
setVisible(false);
}
}
Se bueno.