jTree1.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
// 设置选择可以包含任何数量的项,这些项不必是连续的。
jTree1.getSelectionModel().setSelectionMode(
TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
// 获取选中节点
DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode) jTree1
.getLastSelectedPathComponent();
if (treeNode == null) {
return;
}
System.out.println(treeNode);
// 获取选中节点的父节点
DefaultMutableTreeNode parent = (DefaultMutableTreeNode) treeNode
.getParent();
if (parent == null) {
return;
}

System.out.println(parent);
// 获取选中节点的节点索引
int selectedIndex = parent.getIndex(treeNode);
System.out.println(selectedIndex);
}
});

解决方案 »

  1.   

    会爆出下列的错误信息 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at examples.Tree.initComponents(Tree.java:102)
    at examples.Tree.<init>(Tree.java:51)
    at examples.Tree$4.run(Tree.java:300)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
      

  2.   

    jTree1.addTreeSelectionListener(new TreeSelectionListener() {  为102行
      

  3.   

    看完你的代码以后
    你是不是想想得到你选中的节点?
    其实你可以用鼠标事件去处理你现在的状况jTree1.addMouseListener(new java.awt.event.MouseAdapter() {
       public void mouseClicked(java.awt.event.MouseEvent evt) {
            jTree1MouseClicked(evt);
       }
    }再来一个方法
    private void jTree1MouseClicked(java.awt.event.MouseEvent evt) {
    TreePath path = jTree1.getSelectionPath(); //获取你所选的路径,会列出一个数组,那就是你的树的层级名称
    DefaultMutableTreeNode type=(DefaultMutableTreeNode) path.getPathComponent(3);//看你的这行代码没加括号里面的参数,所以获取不到你到底要获取第几行树节点名,加个参数就好了}其它的代码没什么问题,可以根据你个人需要去加。