java - 鼠标监听器不适用于界面

标签 java swing

我对奇怪的鼠标监听器行为感到困惑。

首先,我定义了一个接口(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/

相关文章:

java - 温度转换 GUI 问题

java - 在不使用 main 声明的情况下使用 JFileChooser

java - 不能引用非静态方法且不允许使用 void 类型

java - Java的ThreadPoolExecutor如何使用自定义ThreadFactory?

java - Java Servlet API session 处理中的自定义 ID

java - Hibernate二级缓存问题

java - 使用 DatabaseMetaData Java 在 oracle 中查找没有复合主键的表

java - 是否可以在 PDFBOX 中调整文本?

java - 单击鼠标重新绘制框架?

java - 如何使用矩形之间的相交进行碰撞检查?