2011-01-09 11 views
8

मैं (स्विंग)JTree बदलें नोड माउस गहराई स्तर

जावा प्रलेखन बताते माउस को बदलने का तरीका अगर एक नोड एक पत्ता है या नहीं मेरी JTree के विभिन्न प्रतीक को बदलने के लिए देख रहा हूँ, लेकिन यह है के अनुसार वास्तव में मैं जो खोज रहा हूं वह नहीं।

मेरे लिए कोई फर्क नहीं पड़ता कि कोई नोड एक पत्ता है या नहीं, अगर मैं नोड तीनों के पहले/दूसरे/तीसरे गहराई स्तर में हूं तो मैं सिर्फ आइकन बदलना चाहता हूं।

उत्तर

5

एक कस्टम TreeCellRenderer लागू करें - घटक के लिए JLabel का उपयोग करें, और इसके आइकन को सेट करें हालांकि आप पेड़ में संग्रहीत ऑब्जेक्ट के डेटा का उपयोग करना पसंद करते हैं। अगर वस्तु आदिम है (उदाहरण के लिए स्ट्रिंग)

http://download.oracle.com/javase/7/docs/api/javax/swing/tree/TreeCellRenderer.html http://www.java2s.com/Code/Java/Swing-JFC/TreeCellRenderer.htm

+0

अच्छा धन्यवाद, यह वही है जो मैं चाहता हूं। – Soulou

8

एक कस्टम TreeCellRenderer के लिए एक विकल्प के रूप में आप वस्तु रैप करने के लिए इसकी गहराई, आदि स्टोर करने के लिए आवश्यकता हो सकती है, आप के लिए यूआई चूक की जगह ले सकता collapsedIcon और expandedIcon:

:

Icon expanded = new TreeIcon(true, Color.red); 
Icon collapsed = new TreeIcon(false, Color.blue); 
UIManager.put("Tree.collapsedIcon", collapsed); 
UIManager.put("Tree.expandedIcon", expanded); 

TreeIcon बस Icon इंटरफेस के एक कार्यान्वयन है

class TreeIcon implements Icon { 

    private static final int SIZE = 14; 
    private boolean expanded; 
    private Color color; 

    public TreeIcon(boolean expanded, Color color) { 
     this.expanded = expanded; 
     this.color = color; 
    } 

    //@Override 
    public void paintIcon(Component c, Graphics g, int x, int y) { 
     Graphics2D g2d = (Graphics2D) g; 
     g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
      RenderingHints.VALUE_ANTIALIAS_ON); 
     g2d.setPaint(color); 
     if (expanded) { 
      g2d.fillOval(x + SIZE/4, y, SIZE/2, SIZE); 
     } else { 
      g2d.fillOval(x, y + SIZE/4, SIZE, SIZE/2); 
     } 
    } 

    //@Override 
    public int getIconWidth() { 
     return SIZE; 
    } 

    //@Override 
    public int getIconHeight() { 
     return SIZE; 
    } 
} 
+1

अरे, उस ट्रैशगोड के लिए धन्यवाद - बस मुझे बड़ा समय में मदद मिली। – hamo

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