Zunächst wird eine Klasse (statisch) angelegt, die die LookAndFeels holt und bereitstellt.
Um beispielsweise alle Werte in einer Combobox zur Auswahl anzuzeigen, wir die Combobox wie folgt befüllt:
Das ändern des LookAndFeel zur Laufzeit:
Code:
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(); } }
Code:
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()); }
Code:
try { //Das in der Combobox ausgewählte LookAndFeel im UIManager setzen UIManager.setLookAndFeel(LookAndFeel.getLookAndFee lClassByName((String)lfComboBox.getSelectedItem()) ); //Für alle JFrames, JDialoge u.a. die aktiv sind oder als Instanz bestehen ein update durchführen SwingUtilities.updateComponentTreeUI(XXXXXXXX); //optional pack(); } catch(ClassNotFoundException|InstantiationExceptio n|IllegalAccessException|UnsupportedLookAndFeelExc eption ex) { ex.printStackTrace(); }