У меня просто мозг уже высох за последние сутки. Щас осталось дерево построить, но я уже не соображаю Пусть некоторая функция создает массив TreeArray[], количество элементов которого известно. TreeArray содержит объект ObjectTreeItem, у которого есть свойство INDEX (int) и Parent (int). Чтобы построить дерево, я написал такой код ( не ругайте сильно, я действительно сжег мозг ) Код (Text): public ObjectTreeItem getParentItem (ObjectTreeItem item) { //На входе дали структуру. //Извлекаем родителя Division div = (Division) item.getTreeObject(); // Это объект, который хранит данные о родителе ObjectTreeItem ParentItem=null; //Пока НИЧТО int i=0; for (i=0; i<TreeArray.length; i++) { ObjectTreeItem current = TreeArray[i]; Division d = (Division) current.getTreeObject(); if (d.dbindex==div.parent) { ParentItem=current; } } return ParentItem; } public void createTreeA(){ /** * Обходит дерево **/ int i=0; for (i=0; i<TreeArray.length; i++) { //Извлекаем очередную структуру; ObjectTreeItem item = TreeArray[i]; item.BROOT_CREATE(); Division CD = (Division) item.getTreeObject(); //Если так, то проверяем, есть ли у нее родитель? ObjectTreeItem Parent = null; if ((Parent=getParentItem(item))!=null) { Parent.addItem(item); Parent.BROOT_CREATE(); } tree.addItem(Parent); item.BROOT_CREATE(); } tree.BROOT_INIT(); } Что не так? Дерево вообще на экран не выводится. P.S.: BROOT_INIT - рисует дерево, BROOT_CREATE - рисует ветку ( т.е. эти функции просто вызывают toScreen(), но переопределяют paint(), они работают, проверял).