我想更改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
设置为树,则它会完美工作,但是一旦添加,图标就会更改,但其选中的突出显示消失了。