2017-05-14 1 views
1

JInternalFrame이 있는데, JTable을 두 번 클릭했을 때 JOptionPane을 표시하려고합니다. 나는 인터넷에 주위를 둘러 보았다 그리고 그 일을하는 유일한 방법은의 mousePressed() 메소드를 오버라이드 (override)하는 것을 발견하고 나는 그것을 어떻게이 있습니다 :어떻게 무시 된 mouseListener를 제거 할 수 있습니까?

tblJobs.addMouseListener (new MouseAdapter() { 
    @Override 
    public void mousePressed (MouseEvent e) { 
     JTable tbl = (JTable)e.getSource(); 
     int row = tbl.rowAtPoint(e.getPoint()); 

     if (e.getButton() == MouseEvent.BUTTON1 && row != -1) { 
      if (e.getClickCount() == 2) { 
       JOptionPane.showMessageDialog(null, "Double click detected"); 
      } 
     } 
    } 
}); 

것은 또한 프레임을 숨길 수있는 버튼이있다 프레임이 숨겨지고 다시 표시 될 때 JTable을 두 번 클릭하면 JOptionPane이 두 번 표시된다는 것을 알았습니다. JOptionPane이 표시되는 횟수는 숨기고 프레임을 표시하는 횟수와 함께 증가한 것으로 보입니다. 내 생각 엔, 내 프레임을 숨기고 다시 표시 할 때 mouseListener가 계속 호출됩니다. 이 방법으로 추가 된 mouseListener를 제거하는 방법이 있습니까? 아니면 JOptionPane이 두 번 이상 표시되지 않게하는 또 다른 방법이 있습니까? 또한, 어떤 식 으로든 내 코드가 어리 석다면, 나에게 말해줘! :) 미리 감사드립니다!

+0

'에 mousePressed()의 첫 번째 행을 설정하거나?'=='tblJobs.removeMouseListener (...)'코드 줄 뒤에'JOptionPane.showMessageDialog (두 번 이상 표시하지 JOptionPane를 중지하는 또 다른 방법이있다 null, "Dou ..." – mKorbel

+0

aside double click은'XxxTableCellEditor'에 대한 액셀러레이터입니다 – mKorbel

+0

나는 거기에 removeMouseListener를 넣으려고했는데 프레임을 숨기고 다시 표시하지 않으면 다시 두 번 클릭 할 수 없습니다. 또한 어떻게 사용합니까? xxxTableCellEditor? – Grandevox

답변

1

숨길 때 부울 calss 변수 hidden = true을 설정하는 방법은 숨기기 해제시 hidden = false?
if(hidden) return;

관련 문제