gpt4 book ai didi

java - 如何删除被覆盖的 mouseListener?

转载 作者:行者123 更新时间:2023-11-30 06:44:00 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com