Я делаю приложение JavaFX, и у меня есть доска с несколькими фигурами (круги и прямоугольники), добавленные в панель. Я не хочу, чтобы круг перемещался по прямоугольнику.JavaFX: предотвратить перетаскивание фигуры поверх другой формы
Круг можно перетаскивать с использованием события мыши (OnMousePressed, Dragged, Released), в то время как прямоугольник не может перемещаться.
Я использую этот код, чтобы определить, когда мой круг сталкивается с прямоугольниками.
private void checkIntersection(Shape block) {
boolean collisionDetected = false;
for (Shape static_bloc : nodes) {
if (static_bloc != block) {
Shape intersect = Shape.intersect(block, static_bloc);
if (intersect.getBoundsInLocal().getWidth() != -1) {
collisionDetected = true;
}
}
}
if (collisionDetected) {
System.out.println("Collision detected");
} else {
System.out.println("Collision non deteted");
}
}
Что мне нужно сделать, так это сделать мой прямоугольник невозможным перетащить, перетаскивая круги. Я не хочу отправить форму обратно в свое первоначальное местоположение. Есть ли способ сделать это, используя intersect или я чего-то не хватает?
@jewelsea, котор вы соединяете ведет к никуда. – Sedrick
@Sedrick, спасибо, создал новый комментарий с правильной ссылкой. Возможно, изучите образец [Oracle Paper doll] (https://docs.oracle.com/javase/8/javafx/events-tutorial/paper-doll.htm). Хотя я предполагаю, что это точно не подходит вам. Я думаю, что ваш вопрос слишком широк, чтобы отвечать, как написано. Например, что происходит, когда вы перетаскиваете круг над Rectangle, он падает на край прямоугольника? он возвращается в исходное положение и т. д.? – jewelsea
@jewelsea Спасибо за помощь, я проведу учебу. Я не хочу, чтобы моя фигура Круга вводила форму прямоугольника, поэтому теоретически я не должен позволять моему приложению перетаскивать круг по прямоугольнику (это не должно быть возможным). Я не хочу возвращаться в исходное положение или уходить по краю, я просто хочу, чтобы он блокировался и позволил мне перетащить еще и обойти прямоугольник, если захочу. –