Ich habe ein merkwürdiges Problem:
Wenn man das Windows Design am Anfang eingestellt hat und dann versucht auf das Windows Classic Design zu wechseln tauchen haufenweise Exceptions auf.
Hat man jedoch zu Anfang irgendein anderes funktioniert alles Problemlos.
Ich hab das ganze mal reproduziert und zusammengefasst:
Verzeiht den - nicht ganz so eleganten - Programmierstil. Viel Copypasta dabei und schnell zusammengeflickt.
Wenn man das Windows Design am Anfang eingestellt hat und dann versucht auf das Windows Classic Design zu wechseln tauchen haufenweise Exceptions auf.
Hat man jedoch zu Anfang irgendein anderes funktioniert alles Problemlos.
Ich hab das ganze mal reproduziert und zusammengefasst:
Java:
import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
public class MainFrame {
static JFrame f;
MainFrame() {
f = new JFrame();
f.setSize(300,300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new JButton("Hier"));
f.setVisible(true);
new ConfigurationWindow();
}
public static void main(String args[]) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ie) { }
new MainFrame();
}
static class ConfigurationWindow extends JDialog {
JComboBox designChooser = new JComboBox();
HashMap<String,String> userInterfaces = new HashMap<String,String>();
ConfigurationWindow() {
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
userInterfaces.put(info.getName(),info.getClassName());
designChooser.addItem(info.getName());
}
designChooser.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==1) {
try {
UIManager.setLookAndFeel(userInterfaces.get(e.getItem().toString()));
activateNewUI();
} catch (Exception ie) {
}
}
}
});
} catch (Exception e) { }
add(designChooser, BorderLayout.NORTH);
setModal(true);
setSize(300,200);
setLocationRelativeTo(null);
setVisible(true);
}
}
public static void activateNewUI() {
SwingUtilities.updateComponentTreeUI(f);
}
}
Verzeiht den - nicht ganz so eleganten - Programmierstil. Viel Copypasta dabei und schnell zusammengeflickt.