2012-10-11 3 views

답변

1

확인이 - documentation of JTree에서

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

: 당신이 때 더블 클릭 이벤트 또는 하나의 검출에 관심이 있다면

노드가 선택되었는지 여부에 관계없이 사용자가 노드를 클릭하면 다음을 수행하는 것이 좋습니다.

나는 소스를 얻을 경우, 객체가 가지는 JTree처럼 selRow 및 selPath.I는 더블 클릭 된 노드의 name.Seems 필요 필요한 이유
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

16,는 아직도 모른다. –

+0

@AdrianStamin 클릭 한 노드는 [selPath.getLastPathComponent()] (http : // docs()와 함께 가져온'selPath'의 마지막 구성 요소입니다. .org/6/docs/api/javax/swing/tree/TreePath.html # getLastPathComponent()) – halex

+0

고마워요, 작동합니다! –

관련 문제