java - 没有检查 JCheckBox 就触发了 MouseListener

标签 java swing

这个很疯狂:

我有一个客户重现错误的 AppSight 记录(对于那些不熟悉的人,这是他们所做的事情的记录,包括键盘/鼠标输入 + 网络流量等)。基本上,我们在屏幕上列出了一系列项目,左侧​​是 JCheckBox-es。我们为 JPanel 设置了一个 MouseListener,看起来像这样:

private MouseAdapter createMouseListener() {
    return new MouseAdapter(){
        public void mousePressed( MouseEvent e ) {

            if( e.getComponent() instanceof JCheckBox ) {
                // Do stuff
            }
        }
    };
}

根据录音,他们似乎非常强烈地点击了其中一个复选框的上方。在那之后,我相信这个听众被解雇了,“Do stuff” block 发生了。但是,它没有选中该框。然后用户看到该框未选中,因此他们单击了它。这导致“Do stuff” block 再次触发,从而撤消了它第一次所做的事情。这一次,复选框被勾选了。因此,用户认为该框已被选中,而且看起来确实如此,但我们的客户认为该框未被选中,因为它被点击了两次。

这可能吗?对于我的生活,我无法重现它或看到它怎么可能,但根据记录和客户端发送到服务器的数据,我看不出任何其他合乎逻辑的解释。

任何帮助、想法和/或想法将不胜感激。

最佳答案

也许用户点击了复选框,但在释放鼠标按钮之前,他将鼠标从组件上移开。我很确定在这种情况下不会检查复选框,尽管不太确定这种情况下的事件线程行为。

关于java - 没有检查 JCheckBox 就触发了 MouseListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3057677/

相关文章:

java - JComponent 未显示在 JPanel 上

Java - 将十六进制字符串解析为 ASN.1 格式

java - android SQLITE 数据库应用程序在运行 getAllComments() 方法时在创建时崩溃

java - Activity 之间的变化不起作用

具有两个面板的 Java 布局中心

java - 无法绘制到 Canvas : "cannot be applied to given types"

java - 如何将 Android 代码导出到 Android Studio 中的 java 库

java - 如何在java中运行带有参数的批处理文件?

java - 对 Swing 的撤消管理器隐藏某些操作

具有两组标签的 Java JSlider