【问题标题】:expand and collapse icons展开和折叠图标
【发布时间】:2012-02-01 08:05:33
【问题描述】:

从下图中可以看出,展开和折叠图标是灰色的,行选择突出显示也是如此。这会导致您在突出显示该行时看不到展开或折叠图标(注意:不是文件夹图标),我想要一个白色的展开或折叠图标被选中的行。怎么办?

另外一个很酷的事情是,在 JTree 获得焦点之前完全隐藏展开和折叠图标。就像 Windows 7 的树。

【问题讨论】:

  • +1 提出了一个很好的问题,但实际上它把你的评论带到了 Vicente Plata 并再次仔细查看屏幕截图让我明白你的意思!我稍微编辑了文本以强调这一点。 ;)
  • 猜猜没人知道,我想我将不得不覆盖树的整个绘制方法

标签: java swing icons jtree


【解决方案1】:

谷歌说 - 根据这篇文章: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;

当然,我不确定您是否可以在旅途中修改图像的颜色。但是你总是可以创建新的图标,对吧?

【讨论】:

  • 嘿,谢谢回复,但是这三个图标(打开关闭和叶子,图标)在我的图像中表示为蓝色文件夹,我想更改展开折叠图标,灰色箭头。我已成功更改它们,它们始终是 + 和 - 符号。
  • 它们可以用下面的代码改变,但是这改变了所有的展开和折叠图标,我现在只想改变所选行的图标。 UIManager.put("Tree.expandedIcon", new ImageIcon(FileBrowser.class.getResource("Resources/Expand.png"))); UIManager.put("Tree.collapsedIcon", new ImageIcon(FileBrowser.class.getResource("Resources/Collapse.png")));
  • 第一个链接失效了。
【解决方案2】:

你可以试试这个。但是您应该注意,要使其正常工作,我必须在树上覆盖 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;
    }}

【讨论】:

    猜你喜欢
    • 2013-10-28
    • 1970-01-01
    • 2012-01-19
    • 2018-12-13
    • 2013-06-06
    • 2020-10-06
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多