2012-09-14 23 views
7

Tôi có một JPopUpMenu mà tôi đã thêm vào nhiều JTables và tôi muốn nhận được bảng cụ thể được nhấp chuột phải để tôi có thể thực hiện thay đổi cho nó. Làm cách nào tôi có thể nhận được thành phần kích hoạt JPopupMenu trong Trình xử lý tác vụ?Làm thế nào để có được thành phần gọi một JPopupMenu?

JPopupMenu popupMenu = new JPopupMenu(); 
JMenuItem menuItemRename = new JMenuItem("Rename"); 
popupMenu.add(menuItemRename); 
table.getTableHeader().setComponentPopupMenu(popupMenu); 

ActionListener menuListener = new ActionListener() { 
    public void actionPerformed(ActionEvent event) { 
      String newTitle = JOptionPane.showInputDialog(null, "Enter new title"); 
        //Get the table and rename it here 
       } 
      }; 
menuItemRename.addActionListener(menuListener); 
+1

+1 để sử dụng componentPopupMenu. Bây giờ sử dụng Hành động thay vì ActionListener và nó sẽ là hoàn hảo :-) – kleopatra

+0

@ kleopatra bạn có ý gì? làm cách nào tôi có thể sử dụng Hành động? – Igor

+0

cách nhanh nhất để tìm hiểu đó là đọc hướng dẫn (tham chiếu trong wiki thẻ swing) về cách sử dụng Tác vụ/Menu :-) – kleopatra

Trả lời

9

Sử dụng phương pháp getInvoker().

Component invoker = popupMenu.getInvoker(); 
+0

ps bạn sẽ cần phải ghi lại nguồn 'ActionEvent' vào tham chiếu' JPopupMenu' đầu tiên;) – MadProgrammer

+0

Điều đó hoạt động. Tôi sẽ chỉnh sửa nó để phù hợp với mã của tôi. – Igor

+0

Một vấn đề mặc dù ... tiêu đề vẫn được chọn cho đến khi được nhấp lại. Bất kỳ ý tưởng? – Igor

0

Sử dụng phương pháp event.getSource();

+1

không, điều đó sẽ cung cấp cho bạn cửa sổ bật lên, chứ không phải người được mời – kleopatra

Các vấn đề liên quan