Я поместил прямоугольник в vbox при щелчке и печатаю координату прямоугольника. При нажатии клавиши я печатаю только координату. Посмотрите на этот пример кода, например:Когда Vbox/Hbox назначает координату для своих детей?
@FXML
private VBox vbox;
@FXML
private AnchorPane anchorpane;
private List<Rectangle> rectangles = new ArrayList<>();
@Override
public void initialize(URL location, ResourceBundle resources) {
System.out.println("init");
}
@FXML
private void onMouseClick(MouseEvent e) {
System.out.println("click");
vbox.getChildren().clear();
for(int i = 0; i < 3 ; i++){
Rectangle r = new Rectangle(100.0, 10.0, Color.BLACK);
r.addEventHandler(KeyEvent.ANY, this::onKeyTyped);
rectangles.add(r);
vbox.getChildren().add(r);
System.out.println(" r Yposition :" + r.getLayoutY() + " or " + r.getBoundsInParent().getMinY() + " or " + r.getBoundsInLocal().getMinY());
System.out.println("Vbox height : " + vbox.getBoundsInLocal().getHeight());
}
}
@FXML
private void onKeyTyped(KeyEvent e) {
System.out.println("Key pressed");
for (Rectangle r : rectangles){
System.out.println(" r Yposition :" + r.getLayoutY() + " or " + r.getBoundsInParent().getMinY() + " or " + r.getBoundsInLocal().getMinY());
}
System.out.println("Vbox height : " + vbox.getBoundsInLocal().getHeight());
}
Это дает мне следующий вывод:
click
r Yposition :0.0 or 0.0 or 0.0
Vbox height : 10.0
r Yposition :0.0 or 0.0 or 0.0
Vbox height : 10.0
r Yposition :0.0 or 0.0 or 0.0
Vbox height : 10.0
Key pressed
r Yposition :0.0 or 0.0 or 0.0
r Yposition :10.0 or 10.0 or 0.0
r Yposition :20.0 or 20.0 or 0.0
Vbox height : 30.0
Поэтому я полагаю, JavaFX назначить координаты формы, когда она выводит его на экран. Но как я могу получить координату формы в Vbox, когда я ее обновляю?
Thx вы это именно то, что я искал, но я не смог его найти. Извините за поздний ответ – user43968