Как создать собственное событие мыши в Java FX - PullRequest
1 голос
/ 08 мая 2020

Как я могу создать пользовательское событие мыши, которое представляет собой комбинацию наведения мыши и события перетаскивания. Это настраиваемое событие мыши запускается, как только я наводю курсор на объект и перетаскиваю его. Вот небольшая демонстрация того, как он должен реагировать.

    public class RectangleEvent extends Application {

    static boolean flag = false;

    @Override
    public void start(Stage primaryStage) {
        Rectangle rectangle = new Rectangle(0,0,100,100);
        Text text = new Text("--");
        text.setFill(Color.BLACK);

        rectangle.addEventFilter(MouseEvent.ANY, (MouseEvent e)->{
            if(customHandler(e)){
                text.setText("Action");
            }else{
                text.setText("--");
            }
        });


        VBox root = new VBox();
        root.setAlignment(Pos.CENTER);
        root.getChildren().addAll(rectangle,text);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

    static boolean customHandler(MouseEvent e) {
        if (e.getEventType().equals(MouseEvent.MOUSE_ENTERED) || e.getEventType().equals(MouseEvent.MOUSE_DRAGGED)) {
             System.out.println("TRUE");
             flag = true;
        }else if(e.getEventType().equals(MouseEvent.MOUSE_EXITED) && (!e.getEventType().equals(MouseEvent.MOUSE_DRAGGED)) || e.getEventType().equals(MouseEvent.MOUSE_RELEASED)) {
            System.out.println("FALSE");
            flag = false;
        }
        return flag;
    }

}
...