gpt4 book ai didi

java - 在java swing中查找下一个出现的树节点

转载 作者:行者123 更新时间:2023-11-30 04:40:16 24 4
gpt4 key购买 nike

我有一个jtree。我已经编写了代码,用于在单击搜索按钮起作用时搜索树中的给定节点,现在我必须再次单击该按钮来搜索下一次出现的情况(如果存在)?你能帮我吗?搜索按钮的代码是

 m_searchButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
DefaultMutableTreeNode node = searchNode(m_searchText.getText());
if (node != null) {
TreeNode[] nodes = m_model.getPathToRoot(node);
TreePath path = new TreePath(nodes);
m_tree.scrollPathToVisible(path);
m_tree.setSelectionPath(path);
} else {
System.out.println("Node with string " + m_searchText.getText() + " not found");
}
}

});

搜索方法的代码是

public DefaultMutableTreeNode searchNode(String nodeStr) {
DefaultMutableTreeNode node = null;
Enumeration e = m_rootNode.breadthFirstEnumeration();
while (e.hasMoreElements()) {
node = (DefaultMutableTreeNode) e.nextElement();
if (nodeStr.equals(node.getUserObject().toString())) {
return node;
}
}
return null;

}

最佳答案

返回找到的节点的列表,而不是仅返回一个节点。

public List<DefaultMutableTreeNode> searchNode(String nodeStr) {
DefaultMutableTreeNode node = null;
Enumeration e = m_rootNode.breadthFirstEnumeration();
List<DefaultMutableTreeNode> list = new ArrayList<DefaultMutableTreeNode>();
while (e.hasMoreElements()) {
node = (DefaultMutableTreeNode) e.nextElement();
if (nodeStr.equals(node.getUserObject().toString())) {
list.add(node);
}
}
return list;
}

自己做按钮ActionListener的逻辑,这并不难。

将节点列表添加为类成员,单击按钮时检查它是否为空,如果为空,则检索列表,获取第一个节点;用它做任何你想做的事情并将其从列表中删除。当到达最后一个元素时,再次将列表设置为空。

关于java - 在java swing中查找下一个出现的树节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12458403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com