【问题标题】:How to know mouseDragged direction - when it's up or down?如何知道 mouseDragged 方向 - 它是向上还是向下?
【发布时间】:2013-09-04 05:17:23
【问题描述】:

完成创建自定义滚动条,问题是:

addMouseMotionListener(new MouseMotionAdapter() {
    @Override
    public void mouseDragged(MouseEvent e) {

        //How to know mouse direction - up or down?

    }
});

也许有一些简单的方法,或者我必须手动完成?

【问题讨论】:

    标签: java swing mouseevent


    【解决方案1】:

    您必须手动完成,但您需要 MouseAdapter 而不是 MouseMotionAdapter 来记录初始 Y 坐标。

    addMouseMotionListener(new MouseAdapter() {
    
        int previousY;
    
        @Override
        public void mousePressed(MouseEvent e) {
            previousY = e.getY();
        }
    
        @Override
        public void mouseDragged(MouseEvent e) {
    
            int y = e.getY();
            if (y < previousY) {
                System.out.println("UP");
            } else if (y > previousY) {
                System.out.println("DOWN");
            }
    
            previousY = y;
        }
    });
    

    【讨论】:

    • 您应该在 mousePressed 中初始化 y 位置,因为 MouseInfo 是相对于屏幕的,而不是生成事件的组件,这可能会导致第一个 mouseDragged 事件的方向错误;)
    • 在我的情况下e.getYOnScreen(); 很有用,滚动条由y - previousY 的差异控制。快完成了:)
    猜你喜欢
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 2023-03-30
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多