【问题标题】:How to develop multi-touch applications in Java?如何用 Java 开发多点触控应用程序?
【发布时间】:2010-09-27 00:37:23
【问题描述】:

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

【问题讨论】:

    标签: java touch multi-touch


    【解决方案1】:

    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);
    

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

    【讨论】:

    • 哎呀......真的,你必须'instanceOf'事件?他们不提供回调,如 processDragEvent、processZoomEvent 等?
    • 据我所知,它们只支持通用的“processEvent”调用,因为您可能想要添加非框架原生的自定义手势。这提供了可扩展性,而无需修改框架代码。
    【解决方案2】:

    【讨论】:

    • 嗨,韦恩,请不要使用仅链接的答案,因为站外链接可能会失效并变得无用。
    【解决方案3】:

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

    【讨论】:

    • 除了内置手势外,MT4j 是否允许开发人员创建新的多点触控手势?从网页上的 MT4j 功能列表中看不出来。
    • 是的,MT4j 确实允许创建新的多点触控手势,因为这是多点触控应用程序的一个非常重要的要求。您所要做的就是创建一个新的所谓的输入处理器并将其注册到一个组件中。展示如何做到这一点的教程即将推出。在此之前,您可以查看现有手势的源代码。
    • MT4j 看起来很棒 - 不幸的是它是 GPL,因此不适合商业应用程序。
    【解决方案4】:

    我的主要工作是从头开始处理和设计我的 UI。我一直在寻找一种不规定 MT4J 和 JavaFX 似乎都可以使用的 UI 框架的解决方案。此外,MT4J 似乎已被放弃。

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

    这专门用于处理、跨平台、开源和活动: https://github.com/vialab/SMT

    【讨论】:

      【解决方案5】:

      MT4J 不适用于 Windows 8。

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-24
        相关资源
        最近更新 更多