LookAndFeel Nullpoint Exception

v_zero

Mitglied
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:

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. 😀
 
Tippfehler?
Java:
userInterfaces.put(info.getName().info.getClassName());
aber dass sollte der Compiler melden, bei dir steht ein Komma zwischen getname() und info
 
Tippfehler?
Java:
userInterfaces.put(info.getName().info.getClassName());
aber dass sollte der Compiler melden, bei dir steht ein Komma zwischen getname() und info

Löl, HashMap = Key,Value = 2 Parameter = ein Komma 🙂

Aber das Problem ist echt merkwürdig...müsste man vllt mal schauen woran das liegt oder obs nen Bug ist, mit dem VM-Arg -Dswing.noxp=true gehts jedenfalls
 

Neue Themen


Zurück
Oben