Java - 仅监听/识别单个鼠标滚轮事件?

时间:2016-07-10 14:46:18

标签: java swing scroll jscrollpane

这就是我要做的事情。我添加了JScrollPane JPanel。我希望鼠标滚轮的每个滚动都将面板滚动到某个组件的位置。

我可以循环浏览每个组件以找到它的位置。我知道如何滚动到该位置。问题是,我无法找到一种只在一次每次鼠标滚动时循环的方法。

这是我尝试过的。我在ChangeListener的视口中添加了JScrollPane,即

scrollpane.getViewport().addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent e) {
            System.out.println(e);
        }
    });

我为每个鼠标滚轮滚动得到三个控制台ChangeEvent,这很糟糕(显然)因为我过度滚动,我认为没有办法确定ChangeEvent的类型是鼠标滚轮滚动,以便每个鼠标滚轮滚动只能获得一个事件。

我尝试的第二件事是AdjustmentListener,即

scrollpane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {

        @Override
        public void adjustmentValueChanged(AdjustmentEvent e) {
            System.out.println(e);
        }
    });

同样的问题。每个鼠标滚轮滚动三个控制台AdjustmentEvent s。无法确定它是否是触发事件的鼠标滚轮(我为这两种类型的事件尝试了一堆不同的getSource()getID()方法,无法做任何事情任何有用的东西)。

所以我问你们,我是否遗漏了一些明显的东西,或者是否会比我想象的单个鼠标滚轮更难?

0 个答案:

没有答案