我对奇怪的鼠标监听器行为感到困惑。
首先,我定义了一个接口(interface):
public interface GeniusField {
public void setEdited(Boolean b);
public void addMouseListeners();
public void addKeyListeners();
public String getStringValue();
}
然后,我实现这个接口(interface):
public class GeniusComboField extends JComboBox implements GeniusField {
public GeniusComboField() {
super();
//blabla
addMouseListeners();
addKeyListeners();
}
@Override
public void addMouseListeners() {
System.out.println("ADD LISTENTER");
this.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
System.out.println("mouse mouse");
}
});
}
}
由于某种原因,当我单击组合框时,没有任何内容被触发(但我得到了“ADD LISTENER”输出)。
我不明白发生了什么。
有人可以帮忙吗?
最佳答案
在 Java Swing JComboBox 中不接收鼠标事件。这是其中的组件完成的。尝试这样的事情:
for (int i=0; i<this.getComponentCount(); i++) {
this.getComponent(i).addMouseListener(this);
}
然后让你的类实现 MouseListener。
或者您可以重写该方法以将对象添加到组合框并调用您的 addMouseListener()
方法。就像每个对象都会有一个监听器。
关于java - 鼠标监听器不适用于界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9083022/