我有一个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;
}
答案 0 :(得分:2)
不是只返回一个节点,而是返回找到的节点列表。
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,如果是,则检索列表,获取第一个节点;随心所欲地做任何事情并将其从列表中删除。当您到达最后一个元素时,将列表设置为null。