JavaFX 2 MouseClicked событие не генерируется, как следует (как в JAVA) - PullRequest
3 голосов
/ 18 января 2012

В следующем коде я демонстрирую разницу между java и javaFX2 в том, что касается генерации события MOUSE_CLICKED, которое я не знаю, следует ли его ожидать или его можно рассматривать как ошибку.

ЭтоКажется, что в JavaFX 2.0 вы можете нажать кнопку мыши, перемещать мышь столько, сколько вам нужно, а затем, когда вы отпустите кнопку, будет вызвано событие mouseClicked.В отличие от JAVA, где, если после нажатия кнопки мыши вы перемещаете мышь, а затем отпускаете кнопку, событие MouseClicked не будет запущено.

Чтобы доказать это, попробуйте следующий код, где при нажатии мышипрямоугольник рисуется в точке щелчка.Даже если вы нажмете левую кнопку, переместите мышь, а затем отпустите кнопку, прямоугольник будет нарисован (в той точке, где вы отпустили кнопку мыши) ...

public class MouseClickTester extends Application {

public static void main(String[] args) {
    launch(args);
}

@Override
public void start(Stage primaryStage) {
    final Group root = new Group();
    Rectangle rect = new Rectangle(0, 0, 300, 300);
    rect.setFill(Color.RED);
    rect.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {

        @Override
        public void handle(MouseEvent me) {
            Rectangle yellowRect = new Rectangle(me.getSceneX(), me.getSceneY(),10,50);
            yellowRect.setFill(Color.YELLOW);
            root.getChildren().add(yellowRect);
        }
    });

    root.getChildren().add(rect);
    primaryStage.setScene(new Scene(root, 300, 250));
    primaryStage.show();
}
}

Следующий код делает то же самое, но в простой Java.Но на этот раз, если вы перемещаете мышь, пока нажата левая кнопка, а затем отпускаете ее, прямоугольник не будет отрисован, так как событие mouseClicked не будет запущено.быть оправданным?Кто ведет себя правильно, а кто нет?И после этого, как я могу эмулировать щелчок мышью в javaFX 2,0, чтобы вести себя так же, как в Java?

Спасибо за помощь!

PS.импорт отсутствует!

1 Ответ

2 голосов
/ 19 января 2012

Это преднамеренно: щелчок мышью генерируется для каждого последующего нажатого и отпущенного действия в одном и том же узле.

Нет правды в отношении того, какое поведение является правильным или неправильным - разные методы используют оба подхода.Было решено, что текущее поведение наиболее полезно для JavaFX.

Примечание: обратите внимание, двойной (и более) щелчок подтверждает, перемещается ли мышь между щелчками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...