2010-09-22 11 views
6

¿hay alguna manera específica de cambiar la apariencia de una aplicación de columpio sin tener que reiniciar la aplicación cada vez que el LAF fue modificado por el usuario?cómo cambiar el aspecto y la sensación de swing de Java sin reiniciar la aplicación?

Estoy buscando una solución donde se pueda seleccionar LAF desde un cuadro de diálogo de configuración y cambie directamente al aplicar sin tener que recurrir a decirle al usuario que reinicie la aplicación.

Actualmente recuerdo la LAF seleccionada en un archivo de propiedades y la configuré al inicio antes de abrir cualquier ventana.

+3

¿Esto no funciona? http://stackoverflow.com/questions/2655929/lookandfeel-not-changing-in-ubuntu/2656085#2656085 –

+0

@tim_yates En realidad, a veces no es así. Los oyentes en particular serán despedidos en un orden diferente, lo que no debería importar, pero a menudo lo hace. Además, no confiaría totalmente en las desinstalaciones de PL & F (sobre todo si no se usa 'UIResource' (ya que no puede con algunas clases y primitivas), entonces ¿cómo puede el PL & F detectar con precisión si el código de la aplicación tiene interés en un propiedad del componente?). –

+0

@Tom Pero podría funcionar si no es una aplicación demasiado compleja, y es la única esperanza de una solución de trabajo que no sea el reinicio total, que el OP desea evitar ... –

Respuesta

5

Desde el Java tutorial:

Primero es necesario establecer la nueva apariencia llamando UIManager.setLookAndFeel:

UIManager.setLookAndFeel(lnfName); 

Luego, con el fin de hacer Componentes existentes reflejan la nueva apariencia, llamar al SwingUtilities.updateComponentTreeUI método en cada contenedor de nivel superior (cuadros de diálogo, marcos ...). También es posible que desee cambiar el tamaño de cada contenedor de nivel superior para adaptarse a los cambios en el tamaño de los componentes que contiene:

SwingUtilities.updateComponentTreeUI(frame); // update components 
frame.pack();         // adapt container size if required 
Cuestiones relacionadas