我正在使用扩展DefaultTreeSelectionModel的类来创建CheckBoxTree。当单击树上的复选框节点时,它会触发一个MouseEvent,它直接从JTree(“树”)获取TreePath。
TreePath path = tree.getPathForLocation(me.getX(), me.getY());
将此“路径”传递给DefaultTreeSelectionModel.addSelectionPath()函数,并选择相应的CheckBoxes。到目前为止一切都很好!
我想要做的是将我自己的TreePath传递给DefaultTreeSelectionModel.addSelectionPath(),但到目前为止,我遇到了TreePath格式的问题,这似乎与我从上面的代码得到的TreePath有所不同,因为它没有同样的效果;那是我的问题。
当我单击CheckBox(工作方式)时,TreePath打印输出是“[/,Documents and Settings,Administrator]”,但要模拟我必须创建一个TreePath,如:
File[] finalPath = new File[3];
finalPath[0] = (File)parentNode; // parentNode is the root from the Model
finalPath[1] = new File("Documents and Settings");
finalPath[2] = new File("Administrator");
TreePath path = new TreePath(finalPath);
...这不起作用,因为索引1和2不引用根,但它打印输出为“[/,Documents and Settings,Administrator]”,就像工作点击方法一样。
然后我尝试了:
File[] finalPath = new File[3];
finalPath[0] = (File)parentNode; // parentNode is the root from the Model
finalPath[1] = new File(finalPath[0],"Documents and Settings");
finalPath[2] = new File(finalPath[1],"Administrator");
TreePath path = new TreePath(finalPath);
...选择“parentNode”并选择“Administrator”,但不选择“Documents and Settings”。打印输出为“[/,/ Documents and Settings,/ Documents and Settings / Administrator]”
所以我认为,它必须将所有三个部分作为单独的选择处理,这样任何出现奇数次的东西都会保持被选中,这就是“文档和设置”没有坚持的原因。所以,我试过了。
File[] finalPath = new File[1];
finalPath[0] = new File(parentNode+"Documents and Settings"+File.separator+"Administrator");
TreePath path = new TreePath(finalPath);
...没有选择任何东西。打印输出为“[\ Documents and Settings \ Administrator]”
所以,经过一段时间,我不知道,5个小时尝试各种排列,上面的是最接近我得到它,现在我在这里发布我的问题,希望得到回应。 感谢!!!!