我使用CustomCellRenderer显示一个JTree与节点作为 显示图像的节点如下所示: -更改JTree的节点图像动态
class CustomTreeCellRenderer extends DefaultTreeCellRenderer{
public Component getTreeCellRendererComponent(JTree tree,
Object value, boolean selected, boolean expanded,
boolean leaf, int row, boolean hasFocus){
super.getTreeCellRendererComponent(tree, value,
selected, expanded, leaf, row, hasFocus);
JLabel label = (JLabel) this ;
label.setIcon(new ImageIcon("white.png")) ;
return this;
}
}
我的要求是改变节点的图像在一些外部行动。 我想重装JTree的模型,但如下图所示它不工作: -
public void actionPerformed(ActionEvent ae) {
DefaultTreeModel model = (DefaultTreeModel) tree.getModel() ;
JLabel label = (JLabel) tree.getCellRenderer() ;
System.out.println(label.getIcon()); //displaying white.png
label.setIcon(new ImageIcon("black.gif")) ;
model.reload() ;
}
我哪里做错了??????
我已经试过了,但它不工作。 – mogli
@rits 我添加的代码正在为我工作 –
是的,它改变了整个树的图标,而不是选定的节点。 – mogli