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:
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
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