我如何知道在显示的 JTree 上突出显示了哪些节点?

How can I tell what nodes are highlighted on a displayed JTree?

我正在开发一个显示 JTree 的应用程序。我希望用户能够突出显示某些节点​​,然后在他们按下按钮后对这些节点执行操作。

突出显示已经有效 - 他们可以单击某些内容,然后按住 Shift 键单击或按住 Control 单击以突出显示其他内容。有什么方法可以检测以这种方式突出显示哪些节点?

谢谢!

如果我对您的理解正确,您想要找到用户选择的所有树节点。参见 JTree.getSelectionPaths()Javadoc 声明它 returns

An array of TreePath objects indicating the selected nodes, or null if nothing is currently selected

每个 TreePath

represents an array of objects that uniquely identify the path to a node in a tree. The elements of the array are ordered with the root as the first element of the array

正如@MadProgrammer 在评论中指出的那样,数组中的最后一个对象是选定的节点。

您可以如下创建 TreeSelectionListener 并使用 TreeSelectionEvent:

中的 e.paths
jTree.addTreeSelectionListener(new TreeSelectionListener() {
    @Override
    public void valueChanged(TreeSelectionEvent e) {
        // e.paths has the selected nodes in the TreeModel
    }
});