ノードを右クリックすると、「名前の変更」、「地域(親)の追加」、「都市(子)の追加」のオプションが表示されるjTreeを作成したいと考えています。
私のjTreeの名前は枝です
私はswingが初めてなので、コードを手伝ってくれる人はいますか。前もって感謝します。
よろしく、 サルクワ
withsetComponentPopupMenu
のメソッドを使用することをお勧めします。mouseListener でメニューの Node を決定し、popupMenu を一度生成します。仕事をするのに役立つ簡単な例を書きます。JTree
MouseListener
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
に aを追加します。JTree
JPopupMenu
ます。 JTree
、適切な変更を行うために への参照が必要なアクションがあります。