我开发了一个JavaFX应用程序,它将用于带触摸屏的系统。
我的开发机器没有触摸屏。在这种环境下,该应用程序看起来像桌面应用程序。
是否可以在非触摸设备上(手动)使用JavaFX测试基于触摸的行为?
是否存在某种模拟触摸事件的JavaFX应用程序模拟器。 (与Android应用程序的Android模拟器类似?)
答案 0 :(得分:1)
您可以构建touch event with a constructor,然后构建fire the event on a stage。您可以在舞台上add a filter进行鼠标事件,消耗它们并触发触摸事件。例如:
stage.addEventFilter(MouseEvent.MOUSE_PRESSED, mouseEvent -> {
mouseEvent.consume();
Event touchEvent = new TouchEvent(lotsaparameters...);
stage.fireEvent(touchEvent);
});
答案 1 :(得分:0)
使用触摸事件调用event.source的代码
button.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
TextField tf = (TextField) event.getSource();
Stage stage = (Stage) tf.getScene().getWindow();
double sceX = event.getSceneX();
double sceY = event.getSceneY();
double scrX = event.getScreenX();
double scrY = event.getScreenY();
TouchPoint tp = new TouchPoint(1, TouchPoint.State.PRESSED, sceX, sceY, scrX, scrY, (EventTarget) event.getSource(), null);
ArrayList<TouchPoint> tpa = new ArrayList<>();
tpa.add(tp);
tf.fireEvent(new TouchEvent(TouchEvent.TOUCH_PRESSED,
tp,
tpa,
1,
false,
false,
false,
false)
);
event.consume();
}
});