2017-05-14 61 views
1

我有一個JInternalFrame,當我的JTable被雙擊時,我想要顯示一個JOptionPane。我在網上看了看四周,發現這樣做的唯一方法是重寫的mousePressed()方法,這是我做的:如何刪除超級鼠標監聽器?

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

'或者是有另一種方式從顯示不止一次?''== tblJobs.removeMouseListener(...)'後,代碼行'JOptionPane.showMessageDialog(停止的JOptionPane null,「Dou ...' – mKorbel

+0

as aside double click is'XxxTableCellEditor'的加速器 – mKorbel

+0

我試着把removeMouseListener放在那裏,除非我隱藏並重新顯示幀,否則我不能再次雙擊。另外,如何使用xxxTableCellEditor? – Grandevox

回答

1

如何設置布爾量變量hidden = true隱藏時,hidden = false當您取消隱藏?
設置在mousePressed()第一線if(hidden) return;