Yes. There may be better ways to do this, but I just created by own renderer for the tree and added a boolean to the node's object (NodeInfo). I also used an icon that looks like a selected checkbox (selected.gif) and one that looks like an unselected checkbox (uinselected.gif). The advantage of doing this is that you can create tri-state checkboxes by simply having another icon and some logic to know when to use it (i.e., several items are highlighted with some being selected as some not).
class MyRenderer extends DefaultTreeCellRenderer
{
public MyRenderer() {}
public Component getTreeCellRendererComponent(
JTree tree,
Object value,
boolean sel,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus)
{
super.getTreeCellRendererComponent(
tree, value, sel,
expanded, leaf, row,
hasFocus);
DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;
Object tempNode = node.getUserObject();
if (tempNode instanceof String)
{
return this;
}
NodeInfo nodeInfo = (NodeInfo)(node.getUserObject());
if (nodeInfo.getSelected())
{
setIcon(new ImageIcon("selected.gif"));
}
else
{
setIcon(new ImageIcon("unselected.gif"));
}
return this;
}
}