Announcement

Collapse
No announcement yet.

Snippet: LookAndFeel zur Laufzeit ändern

Collapse
This is a sticky topic.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Snippet: LookAndFeel zur Laufzeit ändern

    Zunächst wird eine Klasse (statisch) angelegt, die die LookAndFeels holt und bereitstellt.

    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();
    }
    
    }
    Um beispielsweise alle Werte in einer Combobox zur Auswahl anzuzeigen, wir die Combobox wie folgt befüllt:

    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());
    }
    Das ändern des LookAndFeel zur Laufzeit:

    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();
    }
    Zuletzt editiert von Christian Marquardt; 22.01.2020, 15:01.
    Christian
Working...
X