2016-12-08 4 views
0

마우스 오른쪽 버튼을 누른 상태에서 메뉴를 팝업하고 싶습니다 (예제에서 작동 중입니다). 그러나 menitems가 왼쪽 클릭만으로 작동하도록하고 싶습니다. (그리고 오른쪽 클릭으로 메뉴를 취소하지만 지금은 왼쪽으로 마우스 오른쪽 버튼을 클릭하면 동작이 호출됩니다.JPopupMenu에서 마우스 왼쪽 버튼으로 JMenuItem을 선택하는 방법은 무엇입니까?

어떻게하면됩니까? MouseListeners 시도했지만 작동하도록 만들 수 없습니다. 당신이 원하는 무엇의 deleteItem에

import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Arrays; 
import java.util.Vector; 

import javax.swing.JFrame; 
import javax.swing.JMenuItem; 
import javax.swing.JOptionPane; 
import javax.swing.JPopupMenu; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.SwingUtilities; 

public class PopupDemo { 

    protected void initUI() { 
     final JFrame frame = new JFrame(PopupDemo.class.getSimpleName()); 
     Vector<String> columns = new Vector<String>(Arrays.asList("Coumn 1", "Column 2")); 
     Vector<Vector<String>> data = new Vector<Vector<String>>(); 
     for (int i = 0; i < 5; i++) { 
      Vector<String> row = new Vector<String>(); 
      for (int j = 0; j < columns.size(); j++) { 
       row.add("Cell " + (i + 1) + "," + (j + 1)); 
      } 
      data.add(row); 
     } 
     final JTable table = new JTable(data, columns); 
     final JPopupMenu popupMenu = new JPopupMenu(); 
     JMenuItem deleteItem = new JMenuItem("Delete"); 
     deleteItem.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       JOptionPane.showMessageDialog(frame, "DELETE OPTION CHOOSED"); 
      } 
     }); 
     popupMenu.add(deleteItem); 
     table.setComponentPopupMenu(popupMenu); 
     frame.add(new JScrollPane(table), BorderLayout.CENTER); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new PopupDemo().initUI(); 
      } 
     }); 
    } 
} 
+0

, 당신은 아마 벡터 멀리해야 클릭 된의 MouseListener 내부 검사입니다; 대신 ArrayList를 사용하십시오. http://stackoverflow.com/questions/1386275/why-is-java-vector-class-considered-obsolete-or-deprecated를 참조하십시오. –

답변

1

는 마우스 버튼이 새로운 코드 인 경우

deleteItem.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mousePressed(MouseEvent e) { 
       if (e.getButton() == MouseEvent.BUTTON3) { 
       // do whatever it is when the right button is pressed 
       } else { 
       // do whatever it is when the left button is pressed 
       } 
      } 
     }); 
관련 문제