在非接触式开发环境中测试触摸事件

时间:2014-08-02 17:45:49

标签: javafx

我开发了一个JavaFX应用程序,它将用于带触摸屏的系统。

我的开发机器没有触摸屏。在这种环境下,该应用程序看起来像桌面应用程序。

是否可以在非触摸设备上(手动)使用JavaFX测试基于触摸的行为?

是否存在某种模拟触摸事件的JavaFX应用程序模拟器。 (与Android应用程序的Android模拟器类似?)

2 个答案:

答案 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();
        }
    });