我使用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