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);
}
} ผลลัพธ์
