노드를 마우스 오른쪽 버튼으로 클릭 할 때 "이름 바꾸기", "지역 추가 (부모) 추가", "추가"옵션을 제공해야하는 jTree를 만들고 싶습니다. 도시 (아이) ". 내가 스윙 새로운 오전으로jTree에서 마우스 오른쪽 버튼 메뉴 팝업 만들기
내의 JTree의 이름은 코드 수있는 한 도움, 지점
입니다. 미리 감사드립니다.
감사합니다, Sarkwa
노드를 마우스 오른쪽 버튼으로 클릭 할 때 "이름 바꾸기", "지역 추가 (부모) 추가", "추가"옵션을 제공해야하는 jTree를 만들고 싶습니다. 도시 (아이) ". 내가 스윙 새로운 오전으로jTree에서 마우스 오른쪽 버튼 메뉴 팝업 만들기
내의 JTree의 이름은 코드 수있는 한 도움, 지점
입니다. 미리 감사드립니다.
감사합니다, Sarkwa
단계 :
MouseListner
JTree
JPopupMenu
으로 표시하십시오.JTree
에 대한 참조가 필요합니다.setComponentPopupMenu
방법을 JTree
과 MouseListener
으로 사용하는 것이 좋습니다. mouseListener에서 메뉴 노드를 결정하고 popupMenu를 한 번 생성하십시오. 나는 당신이 당신의 일을하도록 도울 수있는 간단한 예를 쓰고있다.
public class Main extends javax.swing.JFrame {
private JTree t;
private DefaultTreeModel model;
private DefaultMutableTreeNode selectedNode;
public Main() {
DefaultMutableTreeNode n = new DefaultMutableTreeNode("test");
n.add(new DefaultMutableTreeNode("test2"));
model = new DefaultTreeModel(n);
t = new JTree(model);
t.setEditable(true);
t.setComponentPopupMenu(getPopUpMenu());
t.addMouseListener(getMouseListener());
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().add(t);
pack();
setVisible(true);
}
private MouseListener getMouseListener() {
return new MouseAdapter() {
@Override
public void mousePressed(MouseEvent arg0) {
if(arg0.getButton() == MouseEvent.BUTTON3){
TreePath pathForLocation = t.getPathForLocation(arg0.getPoint().x, arg0.getPoint().y);
if(pathForLocation != null){
selectedNode = (DefaultMutableTreeNode) pathForLocation.getLastPathComponent();
} else{
selectedNode = null;
}
}
super.mousePressed(arg0);
}
};
}
private JPopupMenu getPopUpMenu() {
JPopupMenu menu = new JPopupMenu();
JMenuItem item = new JMenuItem("edit");
item.addActionListener(getEditActionListener());
menu.add(item);
JMenuItem item2 = new JMenuItem("add");
item2.addActionListener(getAddActionListener());
menu.add(item2);
return menu;
}
private ActionListener getAddActionListener() {
return new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if(selectedNode != null){
System.out.println("pressed" + selectedNode);
DefaultMutableTreeNode n = new DefaultMutableTreeNode("added");
selectedNode.add(n);
t.repaint();
t.updateUI();
}
}
};
}
private ActionListener getEditActionListener() {
return new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if(selectedNode != null){
//edit here
System.out.println("pressed" + selectedNode);
}
}
};
}
public static void main(String... s){
new Main();
}
}
getPopUpMenu
popup을 생성하는 방법입니다. popUp의 모든 항목에 대해 Listener를 추가합니다. 이름 바꾸기 노드의 경우 메뉴 대신 CellEditor
을 사용하는 것이 좋습니다. 간단한 예제로 here을 사용합니다.
그리고이 tutorial for JTree
는 u는 나에게 어떻게의 예를 들어 줄 개 pls 수 읽기가 완료? 그것을 이해할 것입니다 – Sarkwa
어느 단계? 스윙 튜토리얼의 일부를 읽을 필요가있는 것처럼 들리지만 많은 예제가 있습니다. – jzd