JList Probleme mit NullPointerException

  • Themenstarter Themenstarter xtreme
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
X

xtreme

Gast
Hallo,

irgendwie verstehe ich nicht, warum ich hier eine Exception bekomme. Ich habe mehrere Elemente in einer Liste. Einmal versuche ich nur ein Element zu selektieren und es kommt ne Fehlermeldung, einmal versuch ich ein Element zu löschen und es kommt ne Fehlermeldung. In beiden Fällen immer ne NullPointerException.

Keine Ahnung warum, Elemente sind auf jeden Fall drin und die Größe kann ich auch mit getModel.getSize() ermitteln. In den beiden Codeausschnitten ist die _layerBox mein JList Element.

Der erste Code zeigt das Event valueChanged, dass auftritt, sobald ich eine Selektion ändere:

Code:
public void valueChanged(ListSelectionEvent e) {
        
        Geometry geo = (Geometry)_layerBox.getSelectedValue();

        if(geo != null)
        {
          ...
        }
    }


Der zweite Code entspringt einem Button, mit dem ich Elemente der Liste nach oben verschieben will. Hierfür lösche ich das Elemente an der aktuellen Position und will es an der neuen Position einfügen. Leider gibt es dann nen Fehler beim Löschen:

Code:
public void actionPerformed(ActionEvent e) {
                    
        if(e.getActionCommand().equals("up"))
        {
            if(_layerBox.getSelectedIndex() != 0 && _layerBox.getSelectedValue() != null)
            {
                int iItem = _layerBox.getSelectedIndex();
                Geometry oItem = (Geometry)_layerBox.getSelectedValue();

                _layerBox.remove(iItem);
                _layerBox.add(this, oItem, iItem);

                _layerBox.setSelectedValue(oItem, true);
            }
        }
}
[/quote]
 
die Fehlermeldung sagt die genau die Zeile, in der der Fehler auftritt,
dann kannst du die Elemente darin genau prüfen,

dein bisheriger Code ist weitgehend ohne Aussagekraft,
z.B. weiß niemand was layerBox ist, vielleicht ist das null und deswegen gibts ne Exception,
ganz einfach 😉
 
OK ein Fehler habe ich beheben können. Es fehlte wirklich eine Zuweisung.

Nun habe ich aber noch eine IndexOutOfBoundsException im folgenden Code:

Code:
int iItem = _layerBox.getSelectedIndex();
Geometry oItem = (Geometry)_layerBox.getSelectedValue();

System.out.println(_layerBox.getSelectedIndex());

_layerBox.remove(iItem);
_layerBox.add(this, oItem, iItem);

Das Ganze ist ein wenig komisch. Ich habe oben ja mal kontrollhalber ein Output reingeschoben. Da bekomme ich den selektierte Index zurück und der lautet 1. Das stimmt auch, denn das selektierte Element steht an zweiter Stelle. Nun möchte ich eben dieses Element löschen, doch ich bekomme die Exception bei dem remove(index) befehl.

Warum? Das Element habe ich mir doch gerade vorher angezeigen lassen. Es existiert!
 
ich weiß an dieser Stelle nicht weiter, außer dass ich vermuten kann, dass du ungenau bist,
z.B. der Fehler in der folgenen Zeile auftritt oder bei anderen Listener-Ausführungen, die vielleicht auf das remove() reagieren,

für mich wäre jetzt nur noch ein ausführbares Test-Programm eine Möglichkeit
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben