我正在使用一个Jtree,我被困在一个地方,
来自图2
I click on A(Check box) and all its child is getting selected - It's fine
来自图3
I Clicked D(CheckBox) and all its parents (A,B,C) are also geting selected.
现在我想做的是,
If i select A -> A,B,C,D will eb selected
If i Select B-> only B,C,D
If c -> C,D
If D-> Only D
我使用的代码是:
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus){
//delegate is TreeCellrenderer
Component renderer = delegate.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
TreePath path = tree.getPathForRow(row);
if(path!=null)
{
//Selection Model is TreeSelection Model
if(selectionModel.isPathSelected(path, true)) //Below code.
{
checkBox.setState(checkBox.SELECTED);
if (selected)
{
//Comes here If check box is selected by mouse click
}
}
else
{
checkBox.setState(checkBox.NOT_SELECTED);
}
}
add(checkBox, BorderLayout.WEST);
add(renderer, BorderLayout.CENTER);
return this;
}
isPathSelected方法:
// tells whether given path is selected.
// if dig is true, then a path is assumed to be selected, if
// one of its ancestor is selected.
public boolean isPathSelected(TreePath path, boolean dig){
if(!dig){
return super.isPathSelected(path);
}
while(path!=null && !super.isPathSelected(path)){
path = path.getParentPath();
}
return path!=null;
}
我不确定我是否是Jtree的新手。请帮忙