2012-05-18 15 views
5

Ist es möglich, ein Leerzeichen zwischen Knotenzeilen in einem JTree hinzuzufügen? Ich benutze benutzerdefinierte Bilder für die Knoten-Symbole und ich denke, die Bilder sind größer als die Standard-Knoten-Symbole, so dass die Knoten-Symbole sehr nahe beieinander sitzen. Es würde schöner aussehen, wenn es ein bisschen Trennung gäbe.Hinzufügen von vertikalem Abstand zwischen Zeilen in einem JTree?

+5

Haben Sie die Methode setRowHeight() von JTree verwendet? Sie können es auf 0 setzen, damit jede Zeile ihre Höhe individuell berechnet. – Subs

Antwort

3

einen tatsächlichen Abstand zwischen dem Baumknoten hinzuzufügen kann, die Benutzeroberfläche zu ändern habt und einen richtigen AbstractLayoutCache Nachfolger (standardmäßig JTree verwendet zwei Klassen, abhängig von der Zeilenhöhe Wert: FixedHeightLayoutCache oder VariableHeightLayoutCache) zurückzukehren.

Der einfachste Weg, um etwas Abstand zwischen den Knoten hinzuzufügen, ist Renderer zu ändern, so dass es einige zusätzliche Grenze hat, zum Beispiel:

public static void main (String[] args) 
{ 
    JFrame frame = new JFrame(); 

    JTree tree = new JTree(); 
    tree.setCellRenderer (new DefaultTreeCellRenderer() 
    { 
     private Border border = BorderFactory.createEmptyBorder (4, 4, 4, 4); 

     public Component getTreeCellRendererComponent (JTree tree, Object value, boolean sel, 
                 boolean expanded, boolean leaf, int row, 
                 boolean hasFocus) 
     { 
      JLabel label = (JLabel) super 
        .getTreeCellRendererComponent (tree, value, sel, expanded, leaf, row, 
          hasFocus); 
      label.setBorder (border); 
      return label; 
     } 
    }); 
    frame.add (tree); 

    frame.pack(); 
    frame.setLocationRelativeTo (null); 
    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 
    frame.setVisible (true); 
} 

Dies als noch ein bisschen härter ist nur die statische Zeilenhöhe einstellen (als Subs im Kommentar angeboten), aber es ist besser wegen der verschiedenen möglichen Schriftgrößen und Stile auf verschiedenen Betriebssystemen. Sie werden also nirgends Größenprobleme haben.

Übrigens können Sie die Darstellung der Knotenauswahl auch so ändern, wie Sie möchten. Auf diese Weise können Sie sogar den Abstand visuell vortäuschen.

+1

Ja, das ist es, was ich getan habe (zusammen mit der Einstellung der Zeilenhöhe von JTree auf 0, so dass die Höhenberechnung für den CellRenderer verschoben wird). Funktioniert ziemlich gut. –

Verwandte Themen