Java - Forzar el perder foco

 
Vista:

Forzar el perder foco

Publicado por Daniel (4 intervenciones) el 21/10/2008 15:30:02
Hola Amigos, tengo un problema que no he podido resolver. Estoy desarrollando un programa que maneja objeto graficos tipo UMLStudio y quisiera implementar algunos "editores rapidos" sobre estos componentes. El primero de estos editores es un cuadro de texto que me permita cambiar de forma rapida el nombre de un componente ( de la misma forma en que se puede cambiar el nombre de un archivo en Windows al presionar F2 ), para ello he creado un popup que contiene un JText que es el encargado de capturar la edicion, al perder el foco este editor cambia el nombre del objeto tal y cual lo quiero. El problema es que quisiera que en el cuadro de Texto al presionar el boton enter sucediera la misma accion que al perder el foco, para ello agregue un KeyListener que escucha cuando se presiona el enter y efectivamente realiza el cambio, pero el popup no desaparece. ¿Como puedo forzar al popup a perder el foco, cerrarlo o eliminarlo?

Toda ayuda es bienvenida
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Forzar el perder foco

Publicado por Danilo Juvinao (278 intervenciones) el 21/10/2008 23:47:46
No se si comprendí bien, pero si el popup lo haces con JOptionPane.showInputdialog(.... al hacer clic en el boton el desaparece. Si el popup lo haces con un JDialog le colocas a la ultima instruccion del boton aceptar del JDialog this.dispose();

Si no comprendí bien, por favor orientame un poco mas para poder ayudarte

Exitos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Forzar el perder foco

Publicado por daniel (4 intervenciones) el 23/10/2008 17:10:25
Gracias por el tiempo, ya resolvi el problema. Danilo, los popup los genero implementando una clase que extiende de Swing.JPopup, mi problema se resolvia simplemente seteando la opcion visible del popup en falso y luego refrescando el invocador del popup

this.setVisible(false);
this.getInvoker().repaint();

Aunque la solucion funciona sigue siendo solamente un "parche", puesto que el popup se esconde y no se destruye, por lo que sigue utilizando recursos, a menos que el garbage collector logre limpiarlo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar