在JTree中自定义图标后不突出显示节点

时间:2019-06-08 23:45:36

标签: java swing icons nodes jtree

我想更改JTree的节点图标,所以我这样做了:

public class MyTreeCellRenderer implements TreeCellRenderer {
    private JLabel label;

    MyTreeCellRenderer() {
        label = new JLabel();
    }

    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded,
                                                  boolean leaf, int row, boolean hasFocus) {
        Object o = ((DefaultMutableTreeNode) value).getUserObject();
        if (o instanceof Node) {
            Node country = (Node) o;
            if (country.getImg() != null) {
                BufferedImage img = resizeImage(country.getImg()); // gives me an iconDimensions image
                label.setIcon(new ImageIcon(img));
            }
            else {
                label.setIcon(null);
            }
        }
        return label;
    }

在将渲染器添加到树后,通过以下方式右移:

jTree.setCellRenderer(new MyTreeCellRenderer()); 

我的每个节点图标都被自己的图像改变了,我的意思是,它解决了。

但是现在,当我单击任何树节点时,这些树节点都不会突出显示。我不明白为什么,我从未更改过jTree selectedModel

如果我没有将MyTreeCellRenderer设置为树,则它会完美工作,但是一旦添加,图标就会更改,但其选中的突出显示消失了。

0 个答案:

没有答案