Underc0de

Programación General => Java => Mensaje iniciado por: Adalher en Diciembre 16, 2018, 04:57:13 PM

Título: Retazo: Cambiar el LookAndFeel para el tiempo de ejecución
Publicado por: Adalher en Diciembre 16, 2018, 04:57:13 PM
Hola,

primero se coloca una clase (estatica) que trae y proporciona el LookAndFeels:

Código (java) [Seleccionar]

public class LookAndFeel
{
private static ArrayList<LookAndFeelInfo> installedLookAndFeels=new ArrayList<>();

static
{
Collections.addAll(installedLookAndFeels,UIManager .getInstalledLookAndFeels());
}


public static ArrayList<LookAndFeelInfo> getInstalledLookAndFeels()
{
return installedLookAndFeels;
}

public static String getLookAndFeelClassByName(String name)
{
for(LookAndFeelInfo lookAndFeelInfo:installedLookAndFeels)
{
if(lookAndFeelInfo.getName().equalsIgnoreCase(name ))
{
return lookAndFeelInfo.getClassName();
}
}
return UIManager.getSystemLookAndFeelClassName();
}

}



Por ejemplo, para mostrar todos los valores de un Combobox para la elección, se llena
el Combobox como sigue:

Código (java) [Seleccionar]

private javax.swing.JComboBox<String> lfComboBox;
...
lfComboBox = new javax.swing.JComboBox<String>();
lfComboBox.setModel(new DefaultComboBoxModel<String>());

.....

for(LookAndFeelInfo value:LookAndFeel.getInstalledLookAndFeels())
{
lfComboBox.addItem(value.getName());
}


El cambiar del LookAndFeel para el tiempo de ejecución:


Código (java) [Seleccionar]

try
{
//Colocar el LookAndFeel que se elige en el ComboboxDas en el UIManager
UIManager.setLookAndFeel(LookAndFeel.getLookAndFee lClassByName((String)lfComboBox.getSelectedItem()) );
//Ejecutar una actualización para todos los JFrames, JDialoge e. o, que estan activos o que quedan como instancias
SwingUtilities.updateComponentTreeUI(XXXXXXXX);
//Opcional
pack();
}
catch(ClassNotFoundException|InstantiationExceptio n|IllegalAccessException|UnsupportedLookAndFeelExc eption ex)
{
ex.printStackTrace();
}


Saludos
Título: Re:Retazo: Cambiar el LookAndFeel para el tiempo de ejecución
Publicado por: Elchito33 en Enero 15, 2019, 09:57:14 AM
Interesante aporte, hay que probarlo  ;D