在 Java Swing 中查找下一个出现的树节点



我有一个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逻辑,这并不难。

添加节点列表

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

最新更新