Я работаю над приложением, которое нужно перемещать узлами на панели.Правильный способ перемещения узла JavaFx8 вокруг
Я только недавно начал изучать javaFx 8, поэтому у меня есть общее представление о рабочем процессе, но пока мне удалось получить рабочий код перетаскиваемого узла, он использует node.setTranslateX() и .setTranslateY().
Все это нормально, пока я не попытался сделать привязку узла к сетке, которая делит площадь сцены на 10 делений высоты и ширины.
Всякий раз, когда я пытаюсь использовать modulos, чтобы получить какие-то привязки, я застрял в том, что я называю преобразование перевода. Я хотел бы непосредственно установить координаты узла самостоятельно. Я пробовал node.relocate (x, y) безрезультатно. Что касается node.setX() или node.setY(). Кажется, они ничего не делают.
Так в основном, у меня есть два вопроса:
- Есть ли способ, чтобы непосредственно установить координаты узла? Если да, то как?
- Каков правильный способ привязки узла к сетке при перетаскивании его мышью?
Мой текущий код использует эти методы, чтобы перетащить узел вокруг:
public class Boat extends ImageView {
private int size ;
private String name ;
private Double dragDeltaX, dragDeltaY;
//Constructor etc here//
this.setOnMousePressed(event -> {
this.setCursor(Cursor.CLOSED_HAND);
dragDeltaX = this.getLayoutX() + event.getX();
dragDeltaY = this.getLayoutY() + event.getY();
});
this.setOnMouseReleased(event -> {
this.setCursor(Cursor.OPEN_HAND);
this.relocate(event.getSceneX(), event.getSceneY());
});
this.setOnMouseDragged(event -> {
this.setTranslateX(event.getSceneX() - dragDeltaX);
this.setTranslateY(event.getSceneY() - dragDeltaY);
});
this.setOnMouseEntered(event -> {
this.setCursor(Cursor.OPEN_HAND);
});
}
Заранее спасибо за помощь,
Какой контейнер ('Pane') вы вкладываете в это? –
@James_D Stackpane – Skwiggs