2012-10-11 58 views

回答

1

检查: -

public class NetworkTree extends JPanel implements TreeSelectionListener { 
    private JTree tree; 
    private static int PANEL_WIDTH=250; 
    private static int PANEL_HEIGHT=500; 
private static String lineStyle = "Horizontal"; 

public NetworkTree() { 
DefaultMutableTreeNode top = new DefaultMutableTreeNode(new Site(
       1,1,"Network","",3)); 
getSubNodes(top,0); 
tree = new JTree(top); 
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); 
tree.addTreeSelectionListener(this); 
JScrollPane treeView = new JScrollPane(tree); 
add(treeView); 

tree.addMouseListener(new MouseAdapter() { 
    public void mouseClicked(MouseEvent me) { 
    newNodeSelected(); 
    } 
}); 
} 
..... 
    public void newNodeSelected() { 
    JOptionPane.showMessageDialog(null,"Hello"); 
} 

..... }

5

documentation of JTree

如果你是兴趣检测双击事件或当 一个用户点击一个节点,不管它是否被选中,我们推荐你做以下操作:

final JTree tree = ...; 

MouseListener ml = new MouseAdapter() { 
    public void mousePressed(MouseEvent e) { 
     int selRow = tree.getRowForLocation(e.getX(), e.getY()); 
     TreePath selPath = tree.getPathForLocation(e.getX(), e.getY()); 
     if(selRow != -1) { 
      if(e.getClickCount() == 1) { 
       mySingleClick(selRow, selPath); 
      } 
      else if(e.getClickCount() == 2) { 
       myDoubleClick(selRow, selPath); 
      } 
     } 
    } 
}; 
tree.addMouseListener(ml); 
+0

我仍然不知道为什么我需要selRow和selPath.I需要双次点击节点的name.Seems一样,如果我得到源,对象是一个JTree。 (我得到了类抛出异常) –

+0

@AdrianStamin你点击的节点是你使用[selPath.getLastPathComponent()]获取的最后一个组件selPath'(http:// docs .oracle.com/javase/6/docs/api/javax/swing/tree/TreePath.html#getLastPathComponent()) – halex

+0

谢谢,它的工作原理!我没有得到什么路径。 –

相关问题