Creía tener controlado el tema de repintados en java. Cuando hacía algo con una ventana (modificar los datos, pintar gráficos, etc, etc) simplemente había que llamar al método repaint(). Este método nofifica a la máquina virtual que el componente necesita repintado. Más adelante, cuando la máquina virtual lo dispone y en un hilo separado, se llama al método paint(Graphics) del componente para que este se pinte.
Sin embargo, encontré un pequeño problema que me ha traido loco durante un buen rato. Resulta que si al hacer una ventana hago esto
ventana = new Ventana();
ventana.add (los botones);
ventana.setVisible(true);
todo va estupendo. Pero si altero el orden
ventana = new Ventana();
ventana.setVisible(true);
ventana.add (los botones);
no hay manera de que se pinten los botones. Por más cosas que he intentado (añadir repaint() al final), no hay manera de que pinten nuevos componentes sobre una ventana ya visible. Al redimensionar la ventana con el ratón, los componentes aparecen de golpe.
Finalmente, gracias a un compañero de trabajo, descubrí el método updateUI(). Este método sí dibuja realmente todos los componentes.
ventana = new Ventana();
ventana.setVisible(true);
ventana.add (los botones);
ventana.updateUI();
23 febrero 2006
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario