代码是用 JavaFX 编写的。
我有一个根面板,上面有一个VBox
。 VBox
中有很多小面板。
我想单击一个按钮将一个小面板添加到VBox
,然后在新面板上弹出一个消息对话框。
button.setOnAction(() -> {
Node selectPanel = new Node();
vbox.getChildren().add(selectPanel);
Bounds bounds = selectPanel.localToScreen(selectPanel.getBoundsInLocal());
showMessage(bounds);
});
但该消息未显示在新面板的位置。
我调试代码并发现边界是根面板(或 vbox)的左上角。有人可以告诉我如何获得新面板的正确坐标吗?
最佳答案
您的代码未编译(请参阅我的评论),但是问题来自这样的事实:即使调用 vbox.getChildren().add(selectPanel);
,布局计算也不会(肯定)会发生。
您可以通过在上述行后执行以下两条语句来强制它:
vbox.layout();
vbox.applyCss();
关于java - 为什么 getBoundsInLocal 得到错误的坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47907144/