JTree - Blätter werden zu klein angezeigt

  • Hallo allerseits,
    zum besseren Verständnis meines Problems habe ich einen Screenshot angehängt.
    Es ist also folgendes: ich habe diesen JTree, dessen Model ich selbst geschrieben habe.
    Der Baum sieht so aus wie er aussehen soll, es funktioniert alles...
    Allerdings, wenn ich bei den Blättern (nur bei den Blättern, bei der Wurzel funktioniert es!) etwas ändere, ändert sich die Breite des jeweiligen Blattes nicht. Stattdessen sieht es so aus wie auf dem Bild. Selbst wenn ich das Fenster größer ziehe, steht immer noch Martina Hu.... dort.
    Ahja, der Original-Wert in dem Blatt war "Maria Huber". Das wurde noch ganz angezeigt. D.h. also, die Größe ist am Anfang genau richtig, und nach einer Änderung bleibt sie leider gleich!

    Code
    JFrame f = new JFrame("Pedigree");
    Container c = f.getContentPane();
    //treem ist ein Objekt meines selbstgeschriebenen TreeModels
    JTree tree = new JTree(treem);
    tree.setEditable(true);
    c.setLayout(new BorderLayout());
    c.add(new JScrollPane(tree), BorderLayout.CENTER);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.pack();
    f.setVisible(true);

    Wenn ich die ScrollBar weggebe oder versuche, die Preferred Size vom JTree zu setzen, ändert sich nichts.
    Hat jemand von euch eine Ahnung, woran das liegen kann?
    Kann das wirklich an meinem selbstgeschriebenen TreeModel liegen? Ich möchte einstweil mal diesen Code nicht posten, der ist relativ lange...

    Mfg.
    java-girl

    There's no better place than 127.0.0.1!

  • Hat jemand von euch eine Ahnung, woran das liegen kann?
    Kann das wirklich an meinem selbstgeschriebenen TreeModel liegen?

    Ich würde sagen, ja. Mit folgender Erstellung von treem funktionierts (bei mir):

    Code
    DefaultMutableTreeNode root=new DefaultMutableTreeNode("Eva Huber");
    root.add(new DefaultMutableTreeNode("Maria Huber"));
    root.add(new DefaultMutableTreeNode("Anna Huber"));
    
    DefaultTreeModel treem=new DefaultTreeModel(root);
  • Danke für deine Antwort!
    Aber jetzt bin ich doch noch selbst draufgekommen!
    Folgendes:
    In meinem TreeModel sah es bisher so aus:

    Code
    public void fireChangeEvent(TreeModelEvent evt){
    	for(TreeModelListener l : listeners){
    		l.treeNodeChanged(evt);
    	}
    }

    Jetzt schaut es so aus:

    Code
    public void fireChangeEvent(TreeModelEvent evt){
    	for(TreeModelListener l : listeners){
    		l.treeStructureChanged(evt);
    	}
    }

    Und das geht. :)
    Trotzdem vielen Dank!

    There's no better place than 127.0.0.1!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!