我有一个 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 显示多次?而且,如果我的代码有任何愚蠢的地方,请随时告诉我! :) 提前致谢!
最佳答案
隐藏时设置 boolean 类变量hidden = true
,取消隐藏时设置hidden = false
怎么样?
将 mousePressed()
中的第一行设置为 if(hidden) return;
关于java - 如何删除被覆盖的 mouseListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43964360/