JTree width der Treenodes auf 100%

Kartoffel

Mitglied
Hallo zusammen,

ich hab einen JTree und möchte mit meinem Renderer alle Knoten so darstellen, dass dieser immer auf 100% Breite skaliert sind. Also der Knoten soll quasi immer so breit sein, damit er das Panel vom JTree bis ganz nach rechts hin auffüllt. Da mein JTree auf eine ScrollPane ist, kann ich ja nicht direkt die width() vom JTree nehmen, da dieser ja scrollbar und somit größer als die Anzeige sein kann. Also hole ich mir die Breite vom parent-Component. Wenn ich jetzt in meinem Renderer mit setPrefferedSize(...) die größe des Panels setze, welches den Knoten darstellen soll, passt das auch. Allerdings werden alle Sub-Panels nicht skaliert.

Beispielcode aus dem Renderer:

Java:
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel,
      boolean expanded, boolean leaf, int row, boolean hasFocus)
  {     
      //... blabla code

      pnlRoot.setBorder(new EmptyBorder(1, 1, 1, 1)); //haupt panel
      pnlRoot.setOpaque(false);
      if(tree.getParent() != null){ //größe anpassen, damit auf 100%
        pnlRoot.setPreferredSize(new Dimension(tree.getParent().getWidth(), 50));
      }

      pnlRoot.add(pnlInfo, BorderLayout.CENTER);    //panel mit weitern labels
      pnlRoot.add(lblIcon, BorderLayout.WEST);    //label mit icon

     return pnlRoot;
}

Also das pnlRoot wird korrekt skaliert, aber alle Components auf diesem Panel nicht.
Hat wer eine Idee was da nicht stimmt? Oder passt mein Ansatz schon nicht?

Gruß
Toffel
 
Hab noch eine weitere Frage: Wenn via CellRenderer meinen Knoten Rendere, und dann einen JButton auf das Panel des Knotens setze, dann bekommt dieser anscheinend keine ActionEvents geliefert. Also wenn ich da nen ActionListener dran hänge, passiert nichts. Ich denke mal, dass der JTree die ganzen events anfängt. Gibt es da eine Möglichkeit die events durchzureichen?
 

Zurück
Oben