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

标签 java swing jtable joptionpane 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 显示多次?而且,如果我的代码有任何愚蠢的地方,请随时告诉我! :) 提前致谢!

最佳答案

隐藏时设置 boolean 类变量hidden = true,取消隐藏时设置hidden = false怎么样?
mousePressed() 中的第一行设置为 if(hidden) return;

关于java - 如何删除被覆盖的 mouseListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43964360/

相关文章:

Java SwingUtilities.invokeLater 更新 TextArea

java - 如何通过选择行并单击“删除”使 Swing 从表中删除条目?

java - JTable 的一个大查询还是两个小查询?

java - 如何添加到类类型的数组列表

java - 在屏幕上绘图,在shell外使用java swt?

java - 如何给ImageButton添加高度?

java - Java swing 中一行显示的 Blob 数据

java - 将 ListModels 设置为 JList

带 GUI 的 Java 结果集 SQL

java - Eclipse e4 - 缺少约束 : Require-Capability: osgi. 扩展程序