我正在尝试使用这个包来实现对商店类别的 CRUD 操作。我不知道在哪里可以找到有使用这个包经验的人,所以我决定在这里问。
我想添加一个快速搜索选项,用户可以在不浏览树的情况下搜索类别,并且选定的路径和节点在 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);
}
^ 注释掉了路径选择,因为它没有产生结果。这同样行不通。
知道如何让树扩展吗?甚至我可以从哪里获得有关此问题的更多信息?
请随时给我建议或让我知道在哪里可以找到解决此问题的方法。
此致。