У меня есть один узел (ImageView), который отображает изображение и другой узел (прямоугольник), который находится поверх него. Поведение, в котором я нуждаюсь, состоит в том, что когда мышь перетаскивается (жестом сжимания-перетаскивания) по прямоугольнику, оба узла должны двигаться когерентно. Мой мыслительный процесс идет в следующем направлении:JavaFX2: координаты начала и конца события перемещения
• Переместите оба узла на одинаковое расстояние в направлении перетаскивания.
Для этого варианта (возможно, есть больше вариантов) Мне нужно расстояние между началом и концом перетаскивания мышью. Я попытался захватить начальную и конечную координаты перетаскивания, но не увенчался успехом. Я думаю, что теряюсь в том, какие обработчики выполняют.
код у меня есть ниже:
import javafx.event.EventHandler;
import javafx.geometry.Rectangle2D;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
public class MyView
{
double mouseDragStartX;
double mouseDragEndX;
double mouseDragStartY;
double mouseDragEndY;
ImageView imageView;
public MyView()
{
imageView = new ImageView("C:\\temp\\test.png");
}
private void setRectangleEvents(final MyObject myObject)
{
myObject.getRectangle().setOnMousePressed(new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent mouseEvent)
{
mouseDragStartX = mouseEvent.getX();
mouseDragStartY = mouseEvent.getY();
mouseEvent.consume();
}
});
myObject.getRectangle().setOnMouseReleased(new EventHandler<MouseEvent>()
{
public void handle(MouseEvent mouseEvent)
{
mouseDragEndX = mouseEvent.getX();
mouseDragEndY = mouseEvent.getY();
myObjectDraggedHandler();
}
});
}
private void myObjectDraggedHandler()
{
Rectangle2D viewport = this.imageView.getViewport();
double newX = this.imageView.getImage().getWidth()
+ (mouseDragEndX - mouseDragStartX);
double newY = this.imageView.getImage().getHeight()
+ (mouseDragEndY - mouseDragStartY);
this.imageView.setViewport(new Rectangle2D(newX, newY, viewport.getWidth(), viewport
.getHeight()));
}
}
P.S: Этот код только для обозначения того, что я пытаюсь реализовать и не будет правильно компилировать.
Или, может быть, мой вопрос должен был быть: Как захватить длину или промежуток перетаскивания мышью?