我把一个Gridpane放在AnchorPane中,我的Gridpane有一组TextField,Label和Buttons,我希望它放在Anchorpane中,但是我的GridPane只是粘在AnchorPane的左上方我为GridPane设置了一个setTopanchor等...但是它不适用于我希望它放在中心的Anchorpane。这是样本。是否有任何缺失,因为它并不适用于AnchorPane?我将等待你的帮助。
答案 0 :(得分:1)
如果我的问题是正确的,并且您希望将GridPane集中在AnchorPane中,则可以在每个AnchorPane宽度或高度变化(anchorPane.widthProperty().addListener()
)上尝试这样的事情:
double x = (anchorPane.getWidth() - GRID_SIZE) / 2;
double y = (anchorPane.getHeight() - GRID_SIZE) / 2;
AnchorPane.setRightAnchor(grid, x);
AnchorPane.setTopAnchor(grid, y);
AnchorPane.setLeftAnchor(grid, x);
AnchorPane.setBottomAnchor(grid, y);
基本上,您需要计算每一侧的偏移量并设置锚点。
以下是StackPane和AncorPane的一些演示代码: https://github.com/varren/JavaFX-Center-GridPane-in-other-Pane/tree/master/src/sample
但是如果你只想让你的网格获得完整的AnchorPane大小,你可以简单地设置
AnchorPane.setRightAnchor(grid, .0);
AnchorPane.setTopAnchor(grid, .0);
AnchorPane.setLeftAnchor(grid, .0);
AnchorPane.setBottomAnchor(grid, .0);
并且不需要监听AnchorPane大小更改。