В Javafx всегда ли событие mouseReleased происходит перед mouseClicked? - PullRequest
0 голосов
/ 21 октября 2018

Какое событие запускается первым?Зависит ли это от порядка инициализации?Это зависит от чего-то еще?Какой принцип стоит за этим?

pane.setOnMouseClicked(e -> {
    doSomething();
});

pane.setOnMouseReleased(e -> {
    doSomething();
});

1 Ответ

0 голосов
/ 21 октября 2018

Вы фактически добавляете обработчик событий в Node, который обрабатывает определенный тип MouseEvent.(Смотрите также Обработка событий JavaFX )

Если вы посмотрите документацию MouseEvent, вы увидите:

MOUSE_PRESSED

public static final EventType<MouseEvent> MOUSE_PRESSED

Это событие происходит при нажатии кнопки мыши.Это активирует жест «нажатие-перетаскивание-отпускание», поэтому все последующие события мыши, пока кнопка не будет отпущена, доставляются в один и тот же узел.

MOUSE_RELEASED

public static final EventType<MouseEvent> MOUSE_RELEASED

Это событие происходит при отпускании кнопки мыши.Он доставляется в тот же узел, где была нажата кнопка, которая активировала жест отпускания-перетаскивания.

MOUSE_CLICKED

public static final EventType<MouseEvent> MOUSE_CLICKED

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

Поэтому, чтобы ответить на ваш вопрос, да, порядок событийвсегда:

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