Retazo: Cambiar el LookAndFeel para el tiempo de ejecución

Iniciado por Adalher, Diciembre 16, 2018, 04:57:13 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Hola,

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

Código: java

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

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

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
Este es el mayor reproche al pueblo hispanohablante:

Que a pesar de su inteligencia y a pesar de su valentía siempre adoran el poder.