![](/img/trans.png)
[英]How to rename the node of a JTree only after clicking pop-up menu item?
[英]creating a right- click menu pop-up on a jTree
我想創建一個jTree,當我右鍵單擊一個節點時,應該給我“重命名”,“添加地區(父)”,“添加城市(子)”的選項。
我的jTree的名字是樹枝
由於我是新手,請問有人可以提供代碼幫助嗎? 提前致謝。
問候,Sarkwa
我建議您將JTree
setComponentPopupMenu
方法與MouseListener
一起使用。 在mouseListener中,確定菜單的Node並生成一次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中的所有項目,我添加動作偵聽器。 對於重命名節點,我建議您使用CellEditor
而不是菜單,我在此處編寫了使用它的簡單示例。
並閱讀有關JTree
教程
腳步:
MouseListner
添加到JTree
JPopupMenu
。 JTree
才能進行適當的修改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.