В этом случае я использую объект сцены, называемый сценой. Это или что-то вроде этого, вероятно, должно делать то, что вы хотите, возможно, вам нужно переключиться между dragBox.setTranslate
и dragBox.setWidth
/.setHeight
в тех случаях, когда вы перетаскиваете или левете, а не вниз и вправо.
Rectangle dragBox = new Rectangle(0, 0, 0, 0);
dragBox.setVisible(false);
scene.addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
if(mouseEvent.getEventType() == MouseEvent.MOUSE_CLICKED){
dragBox.setVisible(true);
dragBox.setTranslateX(mouseEvent.getX());
dragBox.setTranslateY(mouseEvent.getY());
}
if(mouseEvent.getEventType() == MouseEvent.MOUSE_MOVED && dragBox.isVisible()){
dragBox.setWidth(mouseEvent.getX() - dragBox.getTranslateX());
dragBox.setHeight(mouseEvent.getY() - dragBox.getTranslateY());
}
if(mouseEvent.getEventType() == MouseEvent.MOUSE_RELEASED)
dragBox.setVisible(false);
}
});
Вы также должны убедиться, чтобы добавить dragBox к панели, что в настоящее время показали на сцене, или иначе dragBox не будут видны.
Ничего не создано: вам просто нужно реализовать это непосредственно с помощью обработчиков мыши. ('setOnMousePressed (...)', 'setOnMouseDragged (...)', 'setOnMouseReleased (...)'). –