本示例说明如何使用TreeSelectionListener来向JTree组件添加树选择侦听器。在下面的侦听器方法中,您可以看到如何获取所选路径以及如何将所选路径打印到控制台。package org.nhooo.example.swing;
import javax.swing.*;
import javax.swing.event.TreeSelectionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import java.awt.*;
public class JTreeSelectionListenerDemo extends JFrame {
public JTreeSelectionListenerDemo() throws HeadlessException {
initializeUI();
}
private void initializeUI() {
setSize(200, 400);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
DefaultMutableTreeNode chapterOne = new DefaultMutableTreeNode("Chapter One");
DefaultMutableTreeNode one = new DefaultMutableTreeNode("1.1");
DefaultMutableTreeNode two = new DefaultMutableTreeNode("1.2");
DefaultMutableTreeNode three = new DefaultMutableTreeNode("1.3");
root.add(chapterOne);
chapterOne.add(one);
chapterOne.add(two);
chapterOne.add(three);
JTree tree = new JTree(root);
tree.addTreeSelectionListener(createSelectionListener());
JScrollPane pane = new JScrollPane(tree);
pane.setPreferredSize(new Dimension(200, 400));
getContentPane().add(pane);
}
private TreeSelectionListener createSelectionListener() {
return new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
TreePath path = e.getPath();
int pathCount = path.getPathCount();
for (int i = 0; i
System.out.print(path.getPathComponent(i).toString());
if (i + 1 != pathCount) {
System.out.print("|");
}
}
System.out.println();
}
};
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new JTreeSelectionListenerDemo().setVisible(true);
}
});
}
}