ArrayIndexOutOfBoundsException: 1 > 0

RedFox

Mitglied
Moin,

ich bekomme nen ArrayIndexOutOfBoundsException: 1 > 0 obwohl der index 2 ist... weiß einer wieso?

Java:
private ArrayList<DefaultMutableTreeNode> roots = new <DefaultMutableTreeNode>ArrayList();

private ArrayList childs = new ArrayList();

private DefaultTreeModel treemodel;

public JTree jTree;

public Tree() {
    treemodel = new DefaultTreeModel(new DefaultMutableTreeNode("ROOT"));

    roots.add(new DefaultMutableTreeNode("irc.netzwerk1.de"));
    roots.add(new DefaultMutableTreeNode("irc.netzwerk2.de"));

    for(int i=0; i<roots.size(); i++) {
        childs.add(new String[]{""+i, "child"+i});
    }

    for(int i=0; i<roots.size(); i++) {
        treemodel.insertNodeInto(new DefaultMutableTreeNode(roots.get(i)), (DefaultMutableTreeNode)treemodel.getRoot(), i);
    }

    for(int i=0; i<childs.size(); i++) {
        String[] child = (String[])childs.get(i);
        String nodeName = child[1];
        int index = Integer.parseInt(child[0]);

            // HIER IST DER FEHLER
            treemodel.insertNodeInto(
                    new DefaultMutableTreeNode(nodeName),
                    (DefaultMutableTreeNode)treemodel.getChild(
                        treemodel.getRoot(), //Der Root mit den 2 Netwerken also hat nen index von 2
                        index), // Hier ist einmal 0 und dann 1
                    i);
            // Wenn ich das ganze in nem Try-Catch mache, bekommt das erste Netzwerk den richtigen Node, aber beim 2ten kommt dann der fehler
    }

    jTree = new JTree(treemodel);
    jTree.setRootVisible(false);
    jTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
}
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Was soll das denn werden? Blickst Du da überhaupt noch durch? Dauernd wird da hin und her gecastet, benutzt doch lokale Variablen, mit denen man dann auch besser nachvollziehen kann was da in den einzelnen Zeilen passiert.

Ausserdem erzeugst Du DefaultMutableTreeNodes denen Du DefaultMutableTreeNodes als Knotenobjekt übergibst. Das macht doch gar keinen Sinn.
 
G

gman

Gast
//Der Root mit den 2 Netwerken also hat nen index von 2

Informatiker fangen meist bei 0 an zu zählen. Wenn du also ein Array oder sowas mit zwei Elementen hast wird
die Zählervariable einmal 0 und einmal 1 sein.
 

RedFox

Mitglied
Ja, deswegen, von meiner sicht her ist da alles ok, da die index'es alles genau Übereinstimmen, ich weiß nicht woran das liegen könnte...
 

Michael...

Top Contributor
Ja, deswegen, von meiner sicht her ist da alles ok
Dass aus meiner Sicht nicht alles ok ist hatte ich ja bereits geschrieben ;-)

Abgesehen von dem merkwürdigen Vorgehen beim Zusammenbau des TreeModels:
Würdest Du nicht versuchen möglichst viel in eine Codezeile zu packen und mehr mit lokalen Variablen arbeiten, hättest Du vermutlich den Fehler bereits selbst gefunden.

Dein "index 2" hat mit dem Fehler gar nichts zu tun. Die Fehlermeldung besagt ja, dass an einer Stelle ein Index 1 verwendet wird, an der maximal Index 0 möglich ist.

Der Fehler tritt auf, weil Du dem zweiten Knoten "irc.netzwerk2.de" einen Kindknoten an zweiter Stelle (entspricht Index 1) einfügen willst, obwohl dieser noch gar kein erstes Kind besitzt.
 

Ähnliche Java Themen

Neue Themen


Oben