Java:JScrollPane在按下ctrl时禁用滚动

use*_*625 6 java swing mouseevent jscrollpane

我想在按下ctrl的同时禁用我的JScrollPane中的鼠标滚动滚动.当您按下ctrl并移动滚轮时,您将放大/缩小并滚动面板,这不是我想要的.

这是工作代码:

    scroller = new JScrollPane(view);
    scroller.removeMouseWheelListener(scroller
            .getMouseWheelListeners()[0]);
    scroller.addMouseWheelListener(new MouseWheelListener() {
        public void mouseWheelMoved(final MouseWheelEvent e) {
            if (e.isControlDown()) {
                if (e.getWheelRotation() < 0) {
                    // Zoom +
                } else {
                    // Zoom -
                }
            } else if (e.isShiftDown()) {
                // Horizontal scrolling
                Adjustable adj = getScroller().getHorizontalScrollBar();
                int scroll = e.getUnitsToScroll() * adj.getBlockIncrement();
                adj.setValue(adj.getValue() + scroll);
            } else {
                // Vertical scrolling
                Adjustable adj = getScroller().getVerticalScrollBar();
                int scroll = e.getUnitsToScroll() * adj.getBlockIncrement();
                adj.setValue(adj.getValue() + scroll);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

编辑了我的问题并自己解决了.如果您有任何调整,请告诉我!

cam*_*ckr 2

看一下鼠标滚轮控制器。您将无法使用确切的代码,但您应该能够使用类的概念。

该代码将默认的 MouseWheelListener 替换为自定义侦听器。然后,它使用一个不同的参数重新创建事件,并将该事件重新分派给默认侦听器。

在您的情况下,您不需要创建新事件,您只需要防止任何带有 Control 修饰符的事件被重新分派到默认侦听器,而是调用您在问题中发布的代码。