Computer >> Máy Tính >  >> Lập trình >> Java

Làm thế nào để thực hiện nhấp chuột phải vào mỗi nút của JTree trong Java?


A JTree là một lớp con của JComponent lớp có thể được sử dụng để hiển thị dữ liệu có thuộc tính phân cấp bằng cách thêm nút đến các nút và giữ nguyên khái niệm về nút cha và nút con. Mỗi phần tử trong cây sẽ trở thành một nút . Các nút có thể mở rộng và thu gọn được . Chúng tôi có thể triển khai nhấp chuột phải vào từng nút của JTree bằng cách sử dụng mouseReleased () phương pháp của MouseAdapter lớp và cần gọi show () phương thức của JPopupMenu lớp để hiển thị menu bật lên trên nút cây.

Ví dụ

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);
   }
}

Đầu ra

Làm thế nào để thực hiện nhấp chuột phải vào mỗi nút của JTree trong Java?