A JTree เป็นคลาสย่อยของ JComponent คลาสที่ใช้แสดงข้อมูลด้วย คุณสมบัติลำดับชั้น โดยการเพิ่ม โหนด โหนดและเก็บแนวคิดของโหนดหลักและโหนดลูก แต่ละองค์ประกอบในแผนผังจะกลายเป็น โหนด . โหนดขยายและยุบได้ . เราสามารถใช้เมาส์คลิกขวาบนแต่ละโหนดของ JTree โดยใช้ mouseReleased() วิธีการของ MouseAdapter class และต้องเรียก show() วิธีการของ JPopupMenu class เพื่อแสดงเมนูป๊อปอัปบนโหนดทรี
ตัวอย่าง
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); } }
ผลลัพธ์