期待多点触控界面变得更加普及的那一天,Java 中是否有可用于开发触控应用程序的库?我正在寻找类似于 MouseListener / MouseMotionListener / MouseWheelListener 的接口。
5 回答
MT4j 项目拥有在 Java 中开发多点触控应用程序所需的一切。所有众所周知的多点触控手势都已内置并且可以像监听鼠标事件一样简单地访问(例如:component.addGestureListener(..))。它还具有类似于 JavaFX 的硬件加速场景图。您甚至可以通过将一个或多个鼠标连接到您的机器来模拟多点触控输入。查看http://www.mt4j.org
上次我研究多点触控 Java 解决方案时, Sparsh仍在我的书签中。
虽然不像典型的鼠标监听器或点击监听器那样直接,但它仍然提供了一个合理的界面。
你需要你的监听类来实现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);
查看网站上的代码示例应该可以让您对框架有一个很好的了解。
这个怎么样:http: //kenai.com/projects/macmultitouch
我主要从事从头开始处理和设计我的 UI 的工作。我一直在寻找一种不规定 MT4J 和 JavaFX 似乎都可以使用的 UI 框架的解决方案。此外,MT4J 似乎已被放弃。
这看起来至少对于 Windows 来说是一个很有前途的解决方案,但我不确定它是否真的发布了: http ://wiki.gestureworks.com/index.php/GestureWorksCore:Gestureworks_Core_Tutorials
这专门用于处理、跨平台、开源和活跃: https ://github.com/vialab/SMT
MT4J不适用于 Windows 8。
如果应用程序仅适用于一个用户,您可以使用JavaFX。触摸事件有不同的侦听器。但是不可能同时处理两个手势,因为所有的触摸点都会合并为一个手势。对于大型多点触摸屏来说,这是一个缺点。对于普通屏幕,只有一个用户可以。
但也有GestureWorks。您可以在那里定义新手势或使用预定义的手势。手势在 XML 文件(称为 GML)中定义。任何对象都可以处理自己的手势。但是您必须手动实现 hitTest 和点分配。但是有一个很棒的教程。
另一个我没有测试过的库是 PQ Lab 的 Multi Touch SDK。