2017-05-14 130 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;