hi,
ich sitze gerade vor einem problem und zwar hab ich mir ein treemodel geschrieben was mir einen verzeichnissdienst im jtree darstellt.
Das geht auch wunderbar nur wird erst der komplette verzeichnissdienst eingelesen un dann dargestellt.
hat jemand eine idee wie man das treemodel dazubekommt nur den aktuell augeklappten knoten auszulesen?
hier mal mein aktuelles Treemodel
Hab mir auch schonmal das bsp aus den faq angeschaut aber das funzt nicht so wirklich mit meinem verzeichnissdienst.
schon thx 4 help
Gruß BB
ich sitze gerade vor einem problem und zwar hab ich mir ein treemodel geschrieben was mir einen verzeichnissdienst im jtree darstellt.
Das geht auch wunderbar nur wird erst der komplette verzeichnissdienst eingelesen un dann dargestellt.
hat jemand eine idee wie man das treemodel dazubekommt nur den aktuell augeklappten knoten auszulesen?
hier mal mein aktuelles Treemodel
Code:
package de.BigBoss.ldap;
import java.util.ArrayList;
import javax.naming.directory.SearchControls;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
public class ldapTree implements TreeModel
{
String Wurzel="";
Ldap ldap;
private Node root;
public ldapTree(String wurz, Ldap LDAP)
{
this.Wurzel = wurz;
this.ldap = LDAP;
root = new Node(Wurzel.substring(Wurzel.indexOf("=")+1), Wurzel, ldap)
{
public String toString()
{
return this.getName();
}
};
}
public Object getRoot()
{
return root;
}
public Object getChild(Object parent, int index)
{
Node node = (Node)parent;
return node.getChild(index);
}
public int getChildCount(Object node)
{
Node parent = (Node)node;
Node[] test = (Node[])parent.getChildren(parent);
return test.length;
}
public boolean isLeaf(Object node)
{
return this.getChildCount(node)==0;
}
public int getIndexOfChild(Object parent, Object child)
{
Node node = (Node)parent;
for(int i = 0; i < 10; i++)
{
if(node.getChild(i) == child)
{
return i;
}
}
return -1;
}
public void valueForPathChanged(TreePath path, Object node)
{
// nicht beachten
}
public void addTreeModelListener(TreeModelListener listener)
{
// nicht beachten
}
public void removeTreeModelListener(TreeModelListener listener)
{
// nicht beachten
}
/***********************************************************************************************************************************************************************/
private class Node
{
private String name;
private String context;
private Node[] children;
private String[] attributes = {""};
public String getName()
{
return name;
}
public Node(String name, String ctx, Ldap ldap)
{
this.name = name;
this.context = ctx;
try
{
ArrayList rueck = ldap.search("objectClass=organizationalUnit", context, attributes,SearchControls.ONELEVEL_SCOPE);
children = new Node[rueck.size()];
if(rueck.size()!=0)
{
for(int i=0;i<rueck.size();i++)
{
children[i] = new Node(rueck.get(i).toString().substring(3, rueck.get(i).toString().indexOf(",")), rueck.get(i).toString(),ldap);
}//ende for i
}//ende if
}
catch (Exception e)
{
e.printStackTrace();
}//ende try/catch
}//ende Node
public Node[] getChildren(Node parent)
{
return children;
}
// Gibt das index'te Kind dieses Nodes zurück
public Node getChild(int index)
{
return children[index];
}//ende getChild
// Der JTree ruft die "toString"-Methode auf, um den Namen eines
// Knoten-Objektes zu erfahren. Überschreibt man die Methode, kann
// man andere Namen anzeigen lassen
public String toString()
{
return name;
}//ende toString
}//ende class Node
}//ende class ldapTree
schon thx 4 help
Gruß BB