Mi problema es el siguiente, estoy haciendo una aplicacion ke se conecta a un servidor utilizando sockets. La conexion esta en una clase distinta del frame principal de la aplicacion y extiende Thread para que la aplicacion no se kede colgada mientras intenta conectar ok. En la clase del frame principal pues le pido la IP o el nombre de Host en un JTextField y al lado hay un JButton("Connect"). Espero ke hasta aki este claro. Cuando pulsan el boton connect, kiero presentar un JDialog ke ponga conectando..., luego creo un objeto de la clase conexion y le paso el contenido del JTextField, es decir la IP o host, y luego compruebo si se ha conectado y entonces kito el JDialog anterior y le saco un nuevo diciendo "Conexion realaizada con exito" en caso contrario le saco uno diciendo ("Error compruebe ip o host") ok.
El problema es ke nunca me saca el primer JDialog bien, osea lo saca pero sin contenido dentro, yo kreo ke es porke pierde el foco cuando se va al objeto conexion y juega con los sockets. Pero si es un thread ke normalmente va a su bola pues no lo entiendo...bueno voy a poner el trozo de codigo a ver si alguien me podria ayudar porfavor...asias a todos y hasta prontisimo...
P.S: el JDialog esta en otra clase llamada MiDialog ke extiende JDialog e implementa Runnable para poder meterlo en otro Thread. Ya se ke suena raro pero eske he probado todas las maneras posibles y esta es la ultima porke ya no puedo mas!! El resultado siempre es el mismo...enfin a ver si hay suerte.
Cita:
::Codigo::
SatConnection c = new SatConnection(hostIp.getText(),"conThread");
c.start();
JPanel diagpanel = new JPanel(new GridLayout(2,1));
JProgressBar pb = new JProgressBar();
pb.setIndeterminate(true);
diagpanel.add(new JLabel("Conectando..."));
diagpanel.add(pb);
MiDialog dialog = new MiDialog(this,"Info",diagpanel);
dialog.setLocationRelativeTo(this);
//dialog.setDefaultLookAndFeelDecorated(true);
dialog.start(); //metodo del thread en el ke dentro hago un this.show() para mostrar el dialogo.
while(c.isAlive()){} //espero a ke el thread termine para comprobar el if de abajo
if (!c.isConOK()) {
dialog.stop(); //lo mismo ke en el start pero con this.dispose()
nuevo dialogo de error
} else {
dialog.stop();
nuevo dialogo conexion OK
}
SatConnection c = new SatConnection(hostIp.getText(),"conThread");
c.start();
JPanel diagpanel = new JPanel(new GridLayout(2,1));
JProgressBar pb = new JProgressBar();
pb.setIndeterminate(true);
diagpanel.add(new JLabel("Conectando..."));
diagpanel.add(pb);
MiDialog dialog = new MiDialog(this,"Info",diagpanel);
dialog.setLocationRelativeTo(this);
//dialog.setDefaultLookAndFeelDecorated(true);
dialog.start(); //metodo del thread en el ke dentro hago un this.show() para mostrar el dialogo.
while(c.isAlive()){} //espero a ke el thread termine para comprobar el if de abajo
if (!c.isConOK()) {
dialog.stop(); //lo mismo ke en el start pero con this.dispose()
nuevo dialogo de error
} else {
dialog.stop();
nuevo dialogo conexion OK
}