展开和折叠图标

问题描述:

正如您从下面的图像中看到的那样,展开和折叠图标是灰色的,就像行选择突出显示一样。这会导致您看不到展开或折叠图标(注意:不是文件夹图标),当该行突出显示时,我想为选定的行具有白色展开或折叠图标。如何做到这一点?展开和折叠图标

enter image description hereenter image description here

别的东西,也将是酷,有展开和折叠图标完全隐藏,直到JTree的获得焦点。像Windows 7的树。

+0

+1的一个很好的问题,但它实际上把您的评论维森特普拉塔与另一仔细看屏幕截图,我意识到究竟你是什么意思!我编辑了一些文字来强调***的重点。 ;) – 2012-02-01 08:48:01

+0

GUI使用什么PLAF? – 2012-02-01 08:49:14

+0

它使用Windows LAF – ex0b1t 2012-02-01 09:55:47

谷歌表示 - 根据这个帖子:http://www.exampledepot.com/egs/javax.swing.tree/DefIcons.html - :

// Retrieve the three icons 
Icon leafIcon = new ImageIcon("leaf.gif"); 
Icon openIcon = new ImageIcon("open.gif"); 
Icon closedIcon = new ImageIcon("closed.gif"); 

// Create tree 
JTree tree = new JTree(); 

// Update only one tree instance 
DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer)tree.getCellRenderer(); 
renderer.setLeafIcon(leafIcon); 
renderer.setClosedIcon(closedIcon); 
renderer.setOpenIcon(openIcon); 

// Remove the icons 
renderer.setLeafIcon(null); 
renderer.setClosedIcon(null); 
renderer.setOpenIcon(null); 

// Change defaults so that all new tree components will have new icons 
UIManager.put("Tree.leafIcon", leafIcon); 
UIManager.put("Tree.openIcon", openIcon); 
UIManager.put("Tree.closedIcon", closedIcon); 

// Create tree with new icons 
tree = new JTree(); 

// Update row height based on new icons; 

当然,我不知道你是否能修改在这去的图像的颜色。但你总是可以创建新的图标,对吧?

+0

嘿,thx回复,但这三个图标(开放封闭和叶,图标)表示为蓝色我的图片中的文件夹,我想更改展开的折叠图标,灰色箭头。我成功地改变了他们,他们总是+和 - 标志。 – ex0b1t 2012-02-01 08:42:20

+0

可以使用下面的代码更改它们,但是这会更改所有展开和折叠图标,现在我只想更改所选行的图标。 UIManager.put(“Tree.expandedIcon”,new ImageIcon(FileBrowser.class.getResource(“Resources/Expand.png”))); UIManager.put(“Tree.collapsedIcon”,new ImageIcon(FileBrowser.class.getResource(“Resources/Collapse.png”))); – ex0b1t 2012-02-01 08:42:39

+0

第一个链接已经死亡。 – 2017-08-04 12:48:28

你可以试试这个。然而,你应该注意到为了使这个工作,我不得不在树上覆盖setUI,只允许我的TreeUI。

private class IconTreeUI extends BasicTreeUI { 

    private Icon collapseIcon = null; 
    private Icon expandIcon = null; 

    @Override 
    public Icon getCollapsedIcon() { 
     if (collapseIcon == null) { 
      collapseIcon = new ImageIcon(yourCollapseImageHere); 
     } 
     return collapseIcon; 
    } 

    @Override 
    public Icon getExpandedIcon() { 
     if (expandIcon == null) { 
      expandIcon = new ImageIcon(yourExpandImageHere); 
     } 
     return expandIcon; 
    }}