Swing Problem mit ListCellRenderer

meerie123

Mitglied
Dieser ListCellRenderer soll die Einträge einer JList unterschiedlich einfärben:
Java:
class MainCellRenderer extends JLabel implements ListCellRenderer {

      public Component getListCellRendererComponent(
        JList list,              // the list
        Object value,            // value to display
        int index,               // cell index
        boolean isSelected,      // is the cell selected
        boolean cellHasFocus)    // does the cell have focus
      {

        Karte karte;
        karte = (Karte)value;
        if(value != null) {

     
            if (isSelected) {
                setBackground(list.getSelectionBackground());
                setForeground(list.getSelectionForeground());
            } else {

                switch(karte.getType()) {
                    case "Ausruestung": setBackground(new Color(211, 211, 211));
                                        break;
                    case "Kreatur": setBackground(new Color(222, 184, 135));
                                    break;   
                    case "Beschwörung": setBackground(new Color(240, 255, 240));
                                        break;
                    case "Formel":  setBackground(new Color(230, 230, 250));
                                    break;
                    case "Verzauberung": setBackground(new Color(255, 228 ,196));
                                         break;
                                    
                    case "Angriff": setBackground(new Color(255, 228, 255));
                                    break;   
                    default:        setBackground(Color.white);   
                                     break;                                   
                }
            }      
        }
       
        setText(karte.getName());
        setEnabled(list.isEnabled());
        setFont(list.getFont());
        setOpaque(true);
        return this;
    }
}

Die Klasse "Karte" enthält alle auf Instanzen dieser Klasse verwendeten Methoden.

Jetzt mein Problem:
Beim Ausführten kommt folgende Exception:

Code:
Exception in thread "main" java.lang.NullPointerException
        at MainCellRenderer.getListCellRendererComponent(GUI.java:246)
        at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source)
        at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Source)
        at javax.swing.plaf.basic.BasicListUI.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at javax.swing.JList.getPreferredScrollableViewportSize(Unknown Source)
        at javax.swing.ViewportLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at javax.swing.ScrollPaneLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.awt.FlowLayout.layoutContainer(Unknown Source)
        at java.awt.Container.layout(Unknown Source)
        at java.awt.Container.doLayout(Unknown Source)
        at java.awt.Container.validateTree(Unknown Source)
        at java.awt.Container.validateTree(Unknown Source)
        at java.awt.Container.validateTree(Unknown Source)
        at java.awt.Container.validateTree(Unknown Source)
        at java.awt.Container.validateTree(Unknown Source)
        at java.awt.Container.validate(Unknown Source)
        at java.awt.Container.validateUnconditionally(Unknown Source)
        at java.awt.Window.show(Unknown Source)
        at java.awt.Component.show(Unknown Source)
        at java.awt.Component.setVisible(Unknown Source)
        at java.awt.Window.setVisible(Unknown Source)
        at GUI.main(GUI.java:368)

Ich hab keine Ahnung wodran das liegen könnte, und nach mehreren Stunden Fehlersuche wollte ich dann lieber mal hier fragen.🙂

Danke für eure Antworten!
 
Was swteht denn in der Zeile? Eine NullPointerException ist nun wirklich leicht zu finden da ja genau die Zeile ausgegeben wird.
 
🙁Keine Ahnung
Irgend eine Variable ist null, auf die zugegriffen werden soll, aber welche soll das sein?

Ich hab mal versucht, die Methode schon vorher aufzurufen und das Ergebnis in einer Variable zu speichern, aber da wurde die selbe Exception geworfen.
 
Lösung gefunden!

In der Klasse "Karte" hatte es nicht ausgereicht, die String-Variable, auf diem mit getType zugegriffen wurde, mit
Code:
String type;
zu initialisieren.
Ich musste schreiben:
Code:
String type = ""
Warum weiß ich zwar nicht, aber jetzt funktionierts!
 

Neue Themen


Zurück
Oben