如何删除覆盖的 mouseListener?
How do I remove an overidden mouseListener?
我有一个 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 多次显示?而且,如果我的代码有任何愚蠢之处,请随时告诉我! :) 提前致谢!
隐藏时设置布尔类变量hidden = true
,取消隐藏时设置hidden = false
如何?
将 mousePressed()
中的第一行设置为 if(hidden) return;
我有一个 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 多次显示?而且,如果我的代码有任何愚蠢之处,请随时告诉我! :) 提前致谢!
隐藏时设置布尔类变量hidden = true
,取消隐藏时设置hidden = false
如何?
将 mousePressed()
中的第一行设置为 if(hidden) return;