Java的getWheelRotation()总是返回1或-1

时间:2014-04-19 18:22:13

标签: java swing user-interface

我正在开发一个依赖于用户输入的程序,而我需要的一件事就是识别有多少"点击"鼠标滚轮在单个滚动中向前或向后旋转。

为此,我使用了MouseWheelListener和函数getWheelRotation(),其中:

  

返回"点击次数"鼠标滚轮旋转为整数。

然而,它似乎只返回-1(如果旋转远离用户)或1(如果向它旋转)。例如,如果车轮旋转3"点击"远离我,程序将返回-1三次而不是-3(当然,运动是连续进行的)。 以下是我用于该特定任务的代码:

private class Handler implements MouseListener, MouseWheelListener {

     public void mouseWheelMoved(MouseWheelEvent event){        
         System.out.println(event.getWheelRotation());   
     }

//Some more code

}    

我的代码中有错误吗?如果没有,是否可以以另一种方式实现,以便函数返回所需的值?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用每次转动滚轮时调用的计数功能,并计算它被点击的次数"在私有成员变量中。

private int counter = 0;

private count(int x) {
    counter += x;
    System.out.println("The wheel was turned " + counter + " times.");
}

private class Handler implements MouseListener, MouseWheelListener {

    public void mouseWheelMoved(MouseWheelEvent event){
        count(event.getWheelRotation());
    }

    //Some more code
}

" klick"之后的输出轮子将是3次:

The wheel was turned 1 times.
The wheel was turned 2 times.
The wheel was turned 3 times.