¿Cuál es la forma correcta de actualizar la interfaz de usuario después de realizar algunas operaciones en Swing?Swing, cómo actualizar correctamente la interfaz de usuario
Por ejemplo, después de hacer clic en un botón, se invoca un método que puede ser casi instantáneo o demorar algunos segundos. De hecho, toda la lógica de aplicación se realiza de forma remota a través de un servicio web, por lo que es normal esperar un poco para que la aplicación responda.
Mi manejador de sucesos de un botón puede parecerse a éstas:
myButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
//callWebService();
//do stuff
//updateUI(); // <----- repaint? revalidate? what?
}
});
Mi actual aplicación llama al método updateUI la que llaman internamente validate() y volver a pintar() para el componente de matriz que mantiene la interfaz de usuario. Esto funciona, pero a veces puedo ver la pantalla parpadear. ¿Lo estoy haciendo mal? Hay una mejor manera de hacerlo?
http://en.wikipedia.org/wiki/SwingWorker – qwerty
Según tengo entendido, esta pregunta se trata de actualizar la IU después de hacer algo, no de hacer cosas en otro hilo para mantener la IU receptiva. Todavía no entiendo por qué se mencionó el tiempo de ejecución del método en la pregunta. –
Mencioné el tiempo de ejecución porque parece que Swing se comporta un poco diferente cuando intenta cargar componentes y la carga lleva demasiado tiempo, por lo tanto, tal vez sea necesario volver a dibujar la pantalla. – Hectoret