Avatar billede di8leva Nybegynder
06. oktober 2003 - 15:19 Der er 2 kommentarer og
1 løsning

JTree viser ikke alle børn

Jeg har to klasser, en "TreeNode" og en "TreeModel".

Jag smider i nogle værdier og allting er fint (jeg kigger i debug). Min ROOT har alle de børn han skal ha, etc.
Men alligevel så viser mit JTree KUN roden, og inget mer.

Kan ni finde hvor det bøvlende fejlen er?

------------------------TreeModel--------
    protected class CurrentUnsitcTreeModel implements TreeModel
    {
        private TreeNode _root;

        public CurrentUnsitcTreeModel(TreeNode root)
        {
            _root = root;
        }

        public void addTreeModelListener(TreeModelListener l) {}
        public Object getChild(Object parent, int index) { return parent != null ? ((UnsitcNode)parent).getChildAt(index) : null; }
        public int getChildCount(Object parent) { return parent != null ? ((UnsitcNode)parent).getChildCount() : 0; }
        public int getIndexOfChild(Object parent, Object child) { return parent != null ? ((UnsitcNode)parent).getIndex((UnsitcNode)child) : -1; }
        public Object getRoot() { return _root; }
        public boolean isLeaf(Object node) { return node != null ? ((UnsitcNode)node).isLeaf() : true; }
        public void removeTreeModelListener(TreeModelListener l) {}
        public void valueForPathChanged(TreePath path, Object newValue) {}

        public void refresh()
        {
        }
    }

------------------------TreeNode------
    protected class UnsitcNode extends DefaultMutableTreeNode implements Comparable
    {
        private Vector _children = new Vector();
        private Unsitc _item;

        public UnsitcNode(Unsitc item)
        {
            _item = item;
        }

        public Unsitc item() { return _item; }

        public int getChildCount() { return _children != null ? _children.size() : 0; }
        public TreeNode getChildAt(int index) { return _children != null ? (TreeNode)_children.get(index) : null; }
        public int getIndex(TreeNode node) { return _children != null ? _children.indexOf(node) : -1; }
        public boolean isLeaf() { return _children != null && _children.size() > 0; }
        public Enumeration children() { return _children != null ? _children.elements() : null; }
        public void addChild(UnsitcNode child)
        {
            if(_children != null)
            {
                _children.add(child);
                Collections.sort(_children);
            }
        }

        public int compareTo(Object other) { return toString().compareTo(other.toString()); }
        public boolean equals(Object other)
        {
            if(other instanceof UnsitcNode)
            {
                UnsitcNode un = (UnsitcNode)other;
                return ObjectUtil.equals(_item, un._item) &&
                      ObjectUtil.equals(_children, un._children);
            }
            return false;
        }

        public String toString() { return _item != null ? _item.toString() : ""; }
    }
Avatar billede nielsbrinch Nybegynder
06. oktober 2003 - 22:37 #1
Hej svensker :D

Jeg har ikke lige kigget din kode igennem, men den slags kan tit løses ved at tegne træet forfra.
Avatar billede di8leva Nybegynder
07. oktober 2003 - 08:24 #2
Min model er testad mha junit-test
alt er korrekt =(

roten har to børn, men fanden ikke i selve JTree

en tanke er att slette allt og starte forfra
Avatar billede di8leva Nybegynder
07. oktober 2003 - 08:44 #3
hahaha!!!!!
ibland kan man vare en idiot =)

public boolean isLeaf() { return _children != null && _children.size() > 0; }

==>

public boolean isLeaf() { return _children == null || _children.size() == 0; }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester