MouseDragEvent
ассоциируется с жестами «полный пресс-перетаскивание-отпускание». Такие жесты должны быть явно запущены путем вызова Node#startFullDrag()
внутри обработчика DRAG_DETECTED
. Документация из MouseEvent
предоставляет дополнительную информацию о различных жестах перетаскивания.
С учетом сказанного вы, вероятно, не хотите использовать события мыши, чтобы знать, когда ваш Slider
' Значение изменилось. Было бы слушать одно или несколько свойств вашего Slider
. Например, вы можете прослушивать или связывать свойство value
, чтобы всегда знать текущее значение. Также есть свойство valueChanging
:
Если true, указывает, что текущее значение этого ползунка изменяется. Это обеспечивает уведомление, что значение изменяется. Как только значение вычислено, оно сбрасывается обратно в false.
Это свойство будет иметь значение true, когда пользователь перетаскивает большой палец, и станет false, когда пользователь «уронит» большой палец. Чтобы прослушать свойство при использовании F XML, вы можете вставить Slider
в контроллер и добавить к нему прослушиватель методом initialize
:
public class Controller {
@FXML private Slider slider;
@FXML
private void initialize() {
slider.valueChangingProperty().addListener((obs, ov, nv) -> {
if (!nv) {
// do something...
}
});
}
}
Если вы хотите, однако, вы можно добавить такого слушателя через файл F XML - см. Введение в F XML:
<StackPane ...>
<Slider onValueChangingChange="#handleValueChangingChange"/>
</StackPane>
public class Controller {
@FXML
private void handleValueChangingChange(ObservableValue<Boolean> obs, Boolean ov, Boolean nv) {
if (!nv) {
// Do something...
}
}
}
Примечание: В моих примерах используется свойство valueChanging
, потому что это может показаться так, как вы хотите, так как вы пытались слушать, когда мышь отпущена. Однако это значение можно изменить программным способом, что, насколько я знаю, не влияет на свойство valueChanging
. Таким образом, если вы хотите всегда знать текущее значение, вам необходимо соблюдать свойство value
.