java试图在没有任何重叠的JavaFX的情况下随机化节点的位置
我创建了一个for循环,将我的所有节点添加到根中,尽管由于它们的位置是随机的,所以它们中的一些最终会重叠
我添加了一个for循环,在一个节点与另一个节点重叠时移动该节点,尽管这并不能真正解决问题,因为它可能只是与另一个节点重叠
有人知道一种没有重叠节点的好方法吗
这是我的代码:
for (int i = 0; i < citiesText.length; i++) {
citiesText[i] = new Text(cities[i][0]);
citiesText[i].setFont(Font.font("Impact", 40));
citiesText[i].setFill(Color.WHITE);
citiesText[i].setStrokeWidth(2);
citiesText[i].setStroke(Color.BLACK);
double height = citiesText[i].getBoundsInParent().getHeight();
double width = citiesText[i].getBoundsInParent().getWidth();
double maxX = 1000 - width;
double maxY = 550 - height;
root.getChildren().add(citiesText[i]);
citiesText[i].relocate(Math.random()*maxX, Math.random()*maxY);
for (int j = 0; j < i; j++) {
if (citiesText[i].getBoundsInParent().intersects(citiesText[j].getBoundsInParent()))
citiesText[i].relocate(Math.random()*maxX, Math.random()*maxY);
}
}
# 1 楼答案
您可以添加一个标志,当标志为真时,继续循环,直到没有重叠。这可能不是最有效的方法,但应该有效。i、 e