I need to simulate finger movement on a touch screen when dragging a mouse.
I try to use setOnMouseDragged
and create my TouchEvent
.
tablehistory.setOnMouseDragged(event -> {
TouchPoint touchPoint = new TouchPoint(
2,
TouchPoint.State.MOVED,
event.getX(),
event.getY(),
event.getScreenX(),
event.getScreenY(),
event.getTarget(),
new PickResult(event.getTarget(), event.getScreenX(), event.getScreenY())
);
java.util.List<javafx.scene.input.TouchPoint> touchPoints = new ArrayList<>();
touchPoints.add(touchPoint);
TouchEvent touchEvent = new TouchEvent(
event.getSource(),
event.getTarget(),
TouchEvent.TOUCH_MOVED,
touchPoint,
touchPoints,
2,
false,
false,
false,
false
);
Event.fireEvent(event.getTarget(), touchEvent);
});
My TouchEvent
is visible in debug:
touch event: TOUCH_MOVED point:TouchPoint [state = MOVED, id = 2, target = StackPane@15a8702b[styleClass=placeholder], x = 912.0, y = 298.0, z = 0.0, pickResult = PickResult [node = StackPane@15a8702b[styleClass=placeholder], point = Point3D [x = 911.0, y = 257.0, z = 0.0], distance = 1.0]
But it differs in the distance
field from TouchEvent
caused by a real touch on the screen.
Real TouchEvent:
touch event: TOUCH_MOVED point:TouchPoint [state = MOVED, id = 1, target = StackPane@15a8702b[styleClass=placeholder], x = 778.0, y = 375.0, z = 0.0, pickResult = PickResult [node = StackPane@15a8702b[styleClass=placeholder], point = Point3D [x = 777.0, y = 334.0, z = 0.0], distance = 1360.3325193588557]
And accordingly my TouchEvent does not work as I need (in this specific example it is table scrolling).
I use java corretto 1.8
Pablo Casil is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.