我试图使用this package来对商店的类别执行CRUD操作。我不知道在哪里找到使用这个软件包的经验的人,所以我决定在这里问。JPersistentTree(JTree,boundtree)将路径扩展到给定节点
我想添加一个快速搜索选项,用户可以在不浏览树的情况下搜索类别,并在JTree上展开选定的路径和节点。
到目前为止,我已经做了以下内容:
ArrayList<FpsInventoryCategory> path;
// recursive method to find the path to the root of a selected node
private void findTreePath(FpsInventoryCategory currentNode) throws StorageException{
Object parentId = currentNode.getParentId();
FpsInventoryCategory parentNode = (FpsInventoryCategory) store.getItem(parentId);
if (parentNode.isRoot()){
path.add(0, parentNode);
} else {
path.add(0, parentNode);
findTreePath(parentNode);
}
}
FpsInventoryCategory实现HierarchialItem。 path是FpsInventoryCategory的ArrayList。这很好,我可以得到所需的路径。
我遇到的问题是了解该软件包以确定如何扩展节点和/或TreePath。我原本是通过TreePath尝试的,但后来才意识到,由于JPersistentTree的整个构想是动态加载数据,所以JTree将不会有数据通过第一行儿童。这是一个正确的假设吗?
如果是这样,那么我假设我已经加载孩子一起这是我试过的路径如下:
private void viewTreeNodeAndPath(Long id2) throws StorageException {
// TODO Auto-generated method stub
gui.getTreeInventoryCategory().getModel().getRoot();
path = new ArrayList<FpsInventoryCategory>();
store = gui.getStore();
FpsInventoryCategory startNode = (FpsInventoryCategory) store.getItem(id);
path.add(startNode);
findTreePath(startNode);
DynamicTreeNode currentTreeNode;
Iterator it = path.iterator();
int i = 0;
FpsInventoryCategory temp;
while(it.hasNext()){
temp = (FpsInventoryCategory) it.next();
System.out.println("temp cat:" + temp.getName());
currentTreeNode = new DynamicTreeNode(store, temp);
currentTreeNode.loadChildren();
gui.getTreeInventoryCategory().expandRow(i);
i++;
}
// selectedTreePath = new TreePath(dynamicNodePath);
// System.out.println(selectedTreePath);
// gui.getTreeInventoryCategory().setSelectionPath(selectedTreePath);
//
// gui.getTreeInventoryCategory().expandPath(selectedTreePath);
}
^由路径注释掉的选择,因为它并没有产生效果。这同样不起作用。
任何想法如何让树扩大?甚至在哪里我可以得到关于此事的更多信息?
请随时通知我或让我知道我在哪里可以找到解决方案。
此致敬礼。
嗨mKorbel,我似乎无法知道/记得你编辑过的东西。我正在研究一种解决方案,它需要从根到遍历JPersistenttree遍历搜索节点,扩展路径中的所有节点。似乎没有效率,但我似乎无法通过路径扩展JPersistentTree。我会在今天晚些时候发布答案。 – greatkalu 2012-08-15 07:41:49