Как я могу создать пользовательское событие мыши, которое представляет собой комбинацию наведения мыши и события перетаскивания. Это настраиваемое событие мыши запускается, как только я наводю курсор на объект и перетаскиваю его. Вот небольшая демонстрация того, как он должен реагировать.
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;
}
}