2012-01-24 92 views
0

我遇到了需要實現自定義樹形單元渲染器的情況。 我的規範是隻有父節點的複選框節點和文本,而不是默認樹形單元格渲染器中使用的文件夾圖標。複選框節點渲染器

我通過下面的代碼片段實現了它。

public Component getTreeCellRendererComponent(JTree tree, Object value, 
     boolean selected, boolean expanded, boolean leaf, int row, 
     boolean hasFocus) { 


    JLabel l = (JLabel)renderer.getTreeCellRendererComponent(
      tree, "", true, expanded, leaf, row, true); 


    l.setIcon(null); 
    l.setText(value.toString()); 
     panel.removeAll(); 
     panel.add(this, BorderLayout.WEST); 
     panel.add(l); 
     return panel; 

} 

結果的屏幕截圖是這樣的。 Parent Node Output

現在您可以看到包含文本「One」的灰色區域。

你能指導我清除灰色區域嗎?

輸出必須看的東西,沒有文本週圍的灰色。

:)

+0

灰色的顏色可能來自你的面板。嘗試調用'panel.setOpaque(false);' – Robin

+0

@Robin。 setOpaque在這裏不起作用。試過了。 – Achilles

回答

3

對於這個問題有很簡單的解決方法,在setBackgroundTreeCellRendererColor返回

Color clr = UIManager.getColor("Tree.textForeground"); 

example從昨天包括

+0

你的意思是renderer.setBackground(UIManager.getColor(「Tree.textForeground」)); '和'textBackground = UIManager.getColor(「樹; – Achilles

+0

@Achilles請不,永遠渲染器返回組件,順便說一句,你試過我昨天公佈,檢查變量'textForeground = UIManager.getColor(「Tree.textForeground」)的代碼示例。 textBackground「);' 他們在'TreeCellRenderer'使用情況,知道我理解你的問題 - > 1年(1和1/2)回來我有很多Swing方法的相同冰球即時:-) – mKorbel

+0

我想盡了辦法你建議。但它似乎不工作。如果你注意到上面的代碼,我使用一個標籤,並將文本放在標籤內,然後將標籤放在面板內。有什麼建議麼 ? – Achilles