Announcement

Collapse
No announcement yet.

JTree Problem...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JTree Problem...

    Hallo!

    Ich habe einen JTree, der mir Daten aus einer Datenbank anzeigt - das Funktioniert auch sehr schön.

    Mein Problem ist, das ich keine Knoten hinzufügen kann, wenn ich ein neues Objekt in der DB speichere d.h.
    Ein frisch erstelltes Objekt möchte ich beim speichern in der DB auch gleich im Baum einfügen und selektieren.

    In meinem Baum befinden sich objekte verschiedener typen wobei der rootknoten der am server angemeldete benutzer ist ( Typ User)
    dieser hat kinderknoten vom typ Category, welche Kinder vom Typ Kontakt haben, die widerum Adressen, Emails, Telefonnummern als Kinder haben.

    ich arbeite also bis jetzt nicht mit einem Node Objekt in dem ich die einzelnen datenbankobjekte kapsele und ich denke hier liegt auch mein problem.

    dumm ist nur, das ich keine Vorstellung habe wie eine ( sicher von DefaultMutableTreeNode abgeleitete ) Nodeklasse aussehen müsste und auch nicht wie eine eigene von JTree abgeleitete TreeKlasse aussehen müsste um hier das ziel zu erreichen.

    anbei mal mein TreeModel - das hilft sicher um die Struktur meiner Daten zu erkennen.....
    <PRE>
    Importe ...

    public class BaumModel
    implements TreeModel {
    public User mUser = null;
    public Session mSession;

    public BaumModel() {
    mUser = AdressStart.mUser;
    mSession = AdressStart.adressSession;

    }

    public Object getRoot() {
    try {
    mSession.update(mUser, mUser.getUserid());

    }
    catch (Exception a) {
    a.printStackTrace();
    }
    return mUser;
    }

    public Object getChild(Object parent, int index) {
    ArrayList returnList = new ArrayList();
    Set result = null;
    Object x = null;
    if (parent instanceof User) {
    try {

    result = mUser.getCategories();

    }
    catch (Exception s) {
    s.printStackTrace();
    }
    for (Iterator it = result.iterator(); it.hasNext(); ) {
    returnList.add( (Category) it.next());
    }
    }
    if (parent instanceof Category) {
    Category temporary = (Category) parent;
    try {

    result = temporary.getContacts();

    }
    catch (Exception s) {
    s.printStackTrace();
    }
    for (Iterator it = result.iterator(); it.hasNext(); ) {
    returnList.add( (Contact) it.next());
    }
    }
    if (parent instanceof Contact) {
    Contact temporary = (Contact) parent;
    try {

    result=temporary.getEmails();
    for (Iterator it = result.iterator(); it.hasNext(); ) {
    returnList.add(it.next());
    }

    result=temporary.getAddresss();
    for (Iterator it = result.iterator(); it.hasNext(); ) {
    returnList.add(it.next());
    }

    result=temporary.getNotices();
    for (Iterator it = result.iterator(); it.hasNext(); ) {
    returnList.add(it.next());
    }
    result=temporary.getPhones();
    for (Iterator it = result.iterator(); it.hasNext(); ) {
    returnList.add(it.next());
    }
    }
    catch (Exception s) {
    s.printStackTrace();
    }
    }
    return returnList.get(index);
    }
    public int getChildCount(Object parent) {
    int count = 0;
    if (parent instanceof User) {
    try {
    count = mUser.getCategories().size();
    }
    catch (Exception a) {
    a.printStackTrace();
    }
    }
    if (parent instanceof Category) {
    Category temporary = (Category) parent;
    try {

    //mSession.update(temporary,temporary.getCategoryid( ));
    count = temporary.getContacts().size();
    }
    catch (Exception a) {
    a.printStackTrace();
    }
    }
    if (parent instanceof Contact) {
    Contact temporary = (Contact) parent;
    try {

    count = temporary.getAddresss().size() + temporary.getEmails().size() +
    temporary.getPhones().size() + temporary.getNotices().size();
    }
    catch (Exception a) {
    a.printStackTrace();
Working...
X