Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีทำ Right-Click บนโหนด JTree เพื่อแสดง Popup Menu ใน Java


JTree เป็นคลาสย่อยของ JComponent ใช้แสดงข้อมูลที่มี ลักษณะลำดับชั้น โดยเพิ่ม โหนด (nodes) เข้าไปในโหนด และเก็บแนวคิด parent และ child node ทุกโหนดสามารถ ขยายและยุบได้ เราสามารถทำ right-click บนโหนด JTree ได้โดยใช้เมธอด mouseReleased() ของ MouseAdapter และเรียกเมธอด show() ของ JPopupMenu เพื่อแสดงเมนูป๊อปอัปบนโหนด

ตัวอย่าง

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;

public class JTreeRightClickTest extends JFrame {
    public JTreeRightClickTest() {
        DefaultMutableTreeNode root = createNodes();
        JTree tree = new JTree(root);
        final TreePopup treePopup = new TreePopup(tree);
        tree.addMouseListener(new MouseAdapter() {
            public void mouseReleased(MouseEvent e) {
                if(e.isPopupTrigger()) {
                    treePopup.show(e.getComponent(), e.getX(), e.getY());
                }
            }
        });
        add(new JScrollPane(tree), BorderLayout.NORTH);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 300);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static DefaultMutableTreeNode createNodes() {
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("Technology");
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("Java");
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("Python");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("Selenium");
        node1.add(new DefaultMutableTreeNode("Programming Language"));
        node2.add(new DefaultMutableTreeNode("Programming Language"));
        node3.add(new DefaultMutableTreeNode("Testing Framework"));
        root.add(node1);
        root.add(node2);
        root.add(node3);
        return root;
    }

    public static void main(String args[]) {
        new JTreeRightClickTest();
    }
}

class TreePopup extends JPopupMenu {
    public TreePopup(JTree tree) {
        JMenuItem delete = new JMenuItem("Delete");
        JMenuItem add = new JMenuItem("Add");
        delete.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                System.out.println("Delete child");
            }
        });
        add.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                System.out.println("Add child");
            }
        });
        add(delete);
        add(new JSeparator());
        add(add);
    }
}

ผลลัพธ์

วิธีทำ Right-Click บนโหนด JTree เพื่อแสดง Popup Menu ใน Java