java - 为什么我不能只使用 MouseAdapter,而不使用 MouseMotionAdapter?

标签 java mouseevent

我的应用程序的窗口可以通过拖动其菜单栏来移动。 但是,我不明白为什么必须使用 MouseMotionAdapter() 来实现此功能。

两个类都有方法:mouseDragged(),因此我删除了MouseMotionAdapter,并将该函数移至MouseAdapter()。我无法再拖动窗口了。为什么?

这段代码完美运行。

menuBar.addMouseListener(new MouseAdapter() {
        @Override
        public void mousePressed(MouseEvent e) {
            mouseX = e.getX();
            mouseY = e.getY();
        }
});

    //마우스로 매뉴를 잡고 움직일 수 있게 해주는 코드.
menuBar.addMouseMotionListener(new MouseMotionAdapter(){
        @Override
        public void mouseDragged(MouseEvent e) {
            int x = e.getXOnScreen();
            int y = e.getYOnScreen();
            setLocation(x - mouseX, y - mouseY);
        }
});

但是,这并不

menuBar.addMouseListener(new MouseAdapter() {
        @Override
        public void mousePressed(MouseEvent e) {
            mouseX = e.getX();
            mouseY = e.getY();
        }

        @Override
        public void mouseDragged(MouseEvent e) {
            int x = e.getXOnScreen();
            int y = e.getYOnScreen();
            setLocation(x - mouseX, y - mouseY);
        }       
});

感谢您的支持

最佳答案

可以只使用MouseAdapter,但您必须调用addMouseMotionListener,以便将鼠标移动事件发送给它。

MouseAdapter ma = new MouseAdapter() {
    @Override
    public void mousePressed(MouseEvent e) {
        mouseX = e.getX();
        mouseY = e.getY();
    }

    @Override
    public void mouseDragged(MouseEvent e) {
        int x = e.getXOnScreen();
        int y = e.getYOnScreen();
        setLocation(x - mouseX, y - mouseY);
    }
});
menuBar.addMouseListener(ma);
menuBar.addMouseMotionListener(ma);

只有使用 addMouseMotionListener 注册的监听器才会发送鼠标移动事件,例如拖动。

来自MouseAdapter docs :

Create a listener object using the extended class and then register it with a component using the component's addMouseListener, addMouseMotionListener, addMouseWheelListener methods.

关于java - 为什么我不能只使用 MouseAdapter,而不使用 MouseMotionAdapter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55556271/

相关文章:

onclick - 如何在 Elm 0.19 中监听全局鼠标事件?

java - 调整窗口大小时组件移动到原始位置

javascript - 是否存在 onmousescroll/onmouserollover 事件?

Delphi,当鼠标离开时如何关闭TComboBox?

java - 图像在 JList 中不可见

java - 如何支持变量上下文路径?

java - Tomcat 在 Eclipse 中运行但无法执行 GET 请求

java - 比较枚举中的排名

java - 如何使用 Jena 查找本体的语句数量

javascript - 鼠标点击 vs jquery click vs dispatchEvent click