В настоящее время я программирую систему инвентаризации, которая включает в себя щелчок, чтобы «прикрепить» элемент к вашей мыши, который затем можно поместить в другое место.
Событие, которое отслеживает это:
getMainUI().setOnMouseMoved(e -> {
if (getStoredItem() != null){
getStoredItem().getImage().setLayoutY( e.getSceneY() + 30);
getStoredItem().getImage().setLayoutX( e.getSceneX() - 30);
}
});
Моя структура проекта - это StackPane в качестве корня сцены, с BorderPane (mainUI) и нормальной панелью (overLay), добавленной как дочерние.Изображение сохраненного элемента следует за мышью, как и ожидалось, если только мышь не вводит любую кнопку / ToggleButton в сцене или правую область BorderPane, которая является панелью вкладок, содержащей инвентарь.
Обычно я ожидаю, что тамбыть элементом сверху, поглощающим событие, но единственным узлом над пользовательским интерфейсом является overLay, для которого pickBounds имеет значение false, чтобы пользователь мог щелкнуть пользовательский интерфейс.Здесь довольно много.