Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 JTree의 각 노드에서 마우스 오른쪽 버튼 클릭을 구현하는 방법은 무엇입니까?


J트리 JComponent 의 하위 클래스입니다. 계층적 속성이 있는 데이터를 표시하는 데 사용할 수 있는 클래스 노드 추가 노드에 연결하고 부모 노드와 자식 노드의 개념을 유지합니다. 트리의 각 요소는 노드가 됩니다. . 노드는 확장 및 축소 가능 . mouseReleased()를 사용하여 JTree의 각 노드에서 마우스 오른쪽 클릭을 구현할 수 있습니다. 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);
   }
}

출력

Java에서 JTree의 각 노드에서 마우스 오른쪽 버튼 클릭을 구현하는 방법은 무엇입니까?