Java触摸板双指滚动监听器

8

我该如何在Java中检测笔记本电脑触摸板上的双指滚动?我已经在谷歌和这里搜索了很久,但找不到任何关于使用触摸板滚动的信息,更别说如何监听它了。希望能得到帮助,非常感谢。


双指滚动肯定是硬件依赖的,不是吗? - Kevin D
3
你需要区分鼠标滚轮和触摸板滚动吗? - Roger Lindsjö
@KevinD - 可能是可以的,我只是在想,由于Java是跨平台的,可能会有解决方案。 - Joe
@RogerLindsjö - 我正在寻找实现一个监听器,以响应触摸板上的双指滚动,所以我想你的问题的答案是肯定的,但我不需要实现鼠标滚动。 - Joe
@Joe 对于Java和我认为大多数其他应用程序来说,鼠标滚轮滚动和触摸板上的双指手势是相同的。如果您想实现一个不使用鼠标滚轮的双指触摸板滚动,您将需要知道滚动来自触摸板,而这可能在Java中是不可能的。 - Vincent Robert
@VincentRobert - 好的,我猜到了,但不确定。 - Joe
3个回答

8
我写了这个样例程序。
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;

import javax.swing.JFrame;

public class ScrollTest {

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(200,200);
        frame.addMouseWheelListener(new MouseWheelListener() {

            @Override
            public void mouseWheelMoved(MouseWheelEvent event) {
                if (event.isShiftDown()) {
                    System.err.println("Horizontal " + event.getWheelRotation());
                } else {
                    System.err.println("Vertical " + event.getWheelRotation());                    
                }
            }
        });
        frame.setVisible(true);
    }
}

它会打印出滚动条是水平还是垂直的,以及在使用Mac触控板在打开的窗口内滚动时滚动了多少。

4
如果这是关于监听用户滚动的问题,您可以通过向控件添加MouseWheelListener来实现。有关更多信息,请参见如何编写鼠标滚轮监听器
如果这是关于从触摸板而不是鼠标检测特定事件的问题,我不知道任何Java功能可用于实现此操作。

这有点复杂,我想监听来自触控板的用户滚动操作,你给的链接很有用但并不适用于我需要的内容(我在 Mac 上操作,如果有任何区别的话)。 - Joe
我在谷歌上搜索了一下MouseWheelListener和Mac OS之间的任何问题,唯一能找到的是确认MouseWheelListener是正确的选择:http://lists.apple.com/archives/java-dev/2008/Jun/msg00169.html 如果这对你不起作用,很抱歉,我会尽可能在家里的Mac上尝试。 - Vincent Robert
好的...也许是我使用的IDE无法、不会或者不能识别滚动。我正在使用Processing,所有的鼠标监听器都能正常工作,除了MouseWheelListener。我会在他们的论坛上查找相关信息。感谢您的回答。 - Joe
我猜我需要按照这里详细介绍的方法,在Processing中使用鼠标滚轮:Processing Wiki - Joe

0

终于有了一个可以监听本地滚动的答案。请查看我的问题与回答:https://dev59.com/wGAf5IYBdhLWcg3wmzlL#31190973

此项目还可以检测滚动手势并以良好的方式报告它们。滚动就像本地 Cocoa 应用程序一样平滑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接