setOnMousePressed и setOnMouseDragged vs @FXML обработчики событий от построителя сцены JavaFX - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь использовать перетаскивание своей сцены через перетаскивание определенного компонента в моем приложении.Это прекрасно работает так:

miniTop.setOnMousePressed(e-> {
    xOffset = e.getSceneX();
    yOffset = e.getSceneY();
});
miniTop.setOnMouseDragged(e -> {
    stage = (Stage) ((Node)e.getSource()).getScene().getWindow();
    stage.setX(e.getScreenX() - xOffset);
    stage.setY(e.getScreenY() - yOffset);
});

Но когда я делаю это ... nononon

@FXML
public void getOffset(MouseEvent e) {
    xOffset = e.getSceneX();
    yOffset = e.getSceneY();
}
@FXML
public void dragStage(MouseEvent e) {
    stage = (Stage) ((Node)e.getSource()).getScene().getWindow();
    stage.setX(e.getScreenX() - xOffset);
    stage.setY(e.getScreenY() - yOffset);
}

, где эти обработчики событий связаны с:

scene builder event handling Я пытался заключить метод dragStage в Platform.runLater(), так как он изменяет интерфейс, перемещая сцену, но это не помогло ...

В чем разница между .setOnMouseи обработчики событий Scene Builder?

РЕДАКТИРОВАТЬ: он начал работать после его запуска через 30 минут?что?(Так трудно учиться, когда ты думаешь, что совершил ошибку, когда у тебя нет хаха)

1 Ответ

0 голосов
/ 20 мая 2018

Не должно быть никакой разницы, документация, доступная для обработчиков событий FXML, просто ссылается на: javafx.beans.property.ObjectProperty<javafx.event.EventHandler<javafx.event.ActionEvent>> onAction

, что здесь

.реализован таким же образом.Вы можете проверить в своем файле FXML, что обработчик событий был правильно назначен ожидаемому элементу?

...