Java MouseEvents 不工作

标签 java swing awt mouseevent mouseenter

这可能是个愚蠢的问题,但我不得不问!

我有以下代码片段,它们应该在用户与对象交互时运行相应的方法。 出于某种原因,“foo”从未被打印出来,但“bar”被打印出来了。

myJSpinner1.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseEntered(java.awt.event.MouseEvent evt) {
    System.out.println("foo"); //"foo" is not printed
  }
});

myJSpinner2.addChangeListener(new java.awt.event.ChangeListener() {
    public void stateChanged(java.awt.event.ChangeEvent evt) {
    System.out.println("bar"); //"bar" is printed
  }
});

我没有发现异常或堆栈跟踪。我在 MouseListener 中缺少什么? 提前致谢。

编辑: MouseEntered 在以完全相同的方式实现的 JCheckBox 上完美运行!

最佳答案

JSpinner 是一个复合组件,由一个文本字段和 2 个按钮组成。通过迭代 getComponents() 的结果并为每个添加一个监听器,可以为所有这些添加鼠标监听器。

但是,根据我的经验,当某件事需要那么多工作时,您可能会以错误的方式去做。

为什么 JSpinner 需要鼠标输入的信息?
你想用这个 Activity 做什么?

更新: 如果您希望提供有关面板中所有控件的信息,您可能希望使用玻璃板来检测鼠标下方的组件。

A Well-behaved Glasspane Alexander Potochkin 的着作是一个很好的起点。

关于Java MouseEvents 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2552503/

相关文章:

java - 将正则表达式应用于 str.split 方法时出现异常

java.lang.IllegalStateException : Cannot call getInputStream() after getReader() has already been called for the current request

java - 有人可以告诉我在Java中设置此Robot类时我做错了什么吗?

Java 仿射变换

java - 按下 UP 键时乒乓 Racket 底部不向上移动

java - 使用 Action 监听器实现颜色变化

java - Hibernate 类强制转换异常

java - Android 当我的文本以编程方式超过水平宽度时

java - JApplet 将启动但未初始化

java - 背景图像和文本的布局管理器