代码之家  ›  专栏  ›  技术社区  ›  David Koelle

如何在Java中开发多点触控应用程序?

  •  19
  • David Koelle  · 技术社区  · 17 年前

    预计多点触控界面将变得更加普及,Java中是否有可用于开发触控应用程序的库?我正在寻找类似于MouseListener/MouseMotionListener/MouseWheelListener的接口。

    5 回复  |  直到 17 年前
        1
  •  9
  •   chris chris    16 年前

    MT4j项目拥有用java开发多点触控应用程序所需的一切。 所有众所周知的多点触控手势都已经内置,可以简单地访问 监听鼠标事件(例如:component.addGestureListener(..))。 它还具有类似于JavaFX的硬件加速场景图。 你甚至可以通过将一个或多个鼠标连接到你的机器来模拟多点触控输入。 请查看 http://www.mt4j.org

        2
  •  5
  •   James Van Huis    17 年前

    Sparsh 它仍然在我上次研究多点触控java解决方案时的书签中。

    虽然不像典型的鼠标监听器或点击监听器那样直截了当,但它仍然提供了一个合理的界面。

    你需要你的听力课来实施 sparshui.client.Client ,这需要 processEvent 方法定义。

    public void processEvent(int groupID, Event event) {
    
            if(event instanceof TouchEvent) {
                TouchEvent e = (TouchEvent)event;
                if(e.getState() == TouchState.BIRTH) {
                    //do initial touch stuff
                } else if(e.getState() == TouchState.MOVE) {
                    //do dragging stuff
                }
            }
            else if(event instanceof DragEvent) {
                DragEvent e = (DragEvent)event;
                //do DragEvent specific stuff
            } else if(event instanceof RotateEvent) {
                RotateEvent e = (RotateEvent)event;
                //do RotateEvent specific stuff
            } else if(event instanceof ZoomEvent) {
                ZoomEvent e = (ZoomEvent)event;
                //do ZoomEvent specific stuff
            }
            //several other gesture types....
    }
    

    之后,您需要启动手势识别服务器,传入您的组件

    new ServerConnection("localhost", objectImplementingClientInterface);
    

    查看网站上的代码示例应该会让你对框架有一个很好的了解。

        3
  •  1
  •   Wayne    17 年前
        4
  •  0
  •   meta-meta    12 年前

    我主要从事从头开始处理和设计我的UI。我一直在寻找一种解决方案,它不会像MT4J和JavaFX那样规定UI框架。此外,MT4J似乎被抛弃了。

    这看起来是一个有前景的解决方案,至少对Windows来说是这样,但我不确定它是否真的已经发布了: http://wiki.gestureworks.com/index.php/GestureWorksCore:Gestureworks_Core_Tutorials

    这是专门针对处理、跨平台、开源和主动的: https://github.com/vialab/SMT

        5
  •  0
  •   benliet    12 年前

    MT4J 不适用于Windows 8。

    如果应用程序仅适用于一个用户,则可以使用 JavaFX 。触摸事件有不同的监听器。但不可能同时处理两个手势,因为所有触摸点将合并为一个手势。对于大型多点触摸屏来说,这是一个劣势。对于普通屏幕,只有一个用户是可以的。

    但也有 手势作品 在那里,您可以定义新的手势或使用预定义的手势。手势在XML文件(称为GML)中定义。任何物体都可以处理自己的手势。但是你必须手动实现hitTest和点数分配。但有一个 greate tutorial .

    另一个我没有测试过的库是 Multi Touch SDK by PQ Lab .