这可能是个愚蠢的问题,但我不得不问!
我有以下代码片段,它们应该在用户与对象交互时运行相应的方法。 出于某种原因,“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/