2012-05-18 11 views
5

क्या JTree में नोड पंक्तियों के बीच कुछ रिक्त स्थान जोड़ना संभव है? मैं नोड आइकन के लिए कस्टम छवियों का उपयोग कर रहा हूं और मुझे लगता है कि छवि मानक नोड आइकन से बड़ी हैं, इसलिए नोड आइकन एक साथ बहुत करीब बैठते हैं। यदि अलग-अलग अलगाव होता तो यह अच्छा लगेगा।एक जेटी में पंक्तियों के बीच लंबवत पैडिंग/स्थान जोड़ना?

+5

क्या आपने JTree की setRowHeight() विधि का उपयोग किया है? आप प्रत्येक पंक्ति को अपनी ऊंचाई की गणना व्यक्तिगत रूप से करने के लिए इसे 0 पर सेट कर सकते हैं। – Subs

उत्तर

3

पेड़ नोड्स आप यूआई को संशोधित करने और एक उचित AbstractLayoutCache उत्तराधिकारी वापस जाने के लिए होगा के बीच एक वास्तविक रिक्ति जोड़ने के लिए (: FixedHeightLayoutCache या VariableHeightLayoutCache डिफ़ॉल्ट JTree द्वारा दो वर्गों, पंक्ति की ऊँचाई मूल्य के आधार पर उपयोग करता है)।

नोड्स के बीच कुछ अंतर को जोड़ने के लिए सबसे आसान तरीका है उदाहरण के लिए, रेंडरर संशोधित करने के लिए, तो यह कुछ अतिरिक्त सीमा होगा:

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); 
} 

यह अभी भी सिर्फ स्थिर पंक्ति की ऊँचाई की स्थापना की तुलना में थोड़ा मुश्किल है (चूंकि सब्सक्राइब टिप्पणी में आपको पेश किया गया है), लेकिन यह विभिन्न ओएस पर विभिन्न संभावित फ़ॉन्ट आकारों और शैलियों के कारण बेहतर है। तो आपके पास कहीं भी आकार की समस्या नहीं होगी।

वैसे, आप जिस तरह से पसंद करते हैं, नोड चयन चयन को भी बदल सकते हैं, इस तरह आप दृष्टि को दृष्टि में नकली भी बना सकते हैं।

+1

हां, यही वह है जो मैंने कर दिया (जेटी की पंक्ति ऊंचाई 0 को सेट करने के साथ-साथ यह सेल रेंडरर की ऊंचाई गणना को रोकता है)। बहुत अच्छी तरह से काम करता है। –

संबंधित मुद्दे