我在课堂上得到了将Application
扩展到设置阶段的代码:
public void start(Stage stage) throws Exception {
GridPane grid = new GridPane();
grid.add(this.pane1, 0, 0);
grid.add(this.pane2, 0, 1);
grid.add(this.pane3, 1, 0, 1, 2);
Pane root = new AnchorPane(grid);
AnchorPane.setLeftAnchor(grid, 0.0);
AnchorPane.setTopAnchor(grid, 0.0);
Scene scene = new Scene(root);
scene.setOnKeyReleased(this::onKeyReleased);
stage.setScene(scene);
stage.sizeToScene();
stage.show();
}
有一个简单的密钥处理程序:
private void onKeyReleased(KeyEvent event) {
switch (event.getCode()) {
case F10:
this.pane3.setVisible(!this.pane3.isVisible());
this.stage.getScene().getWindow().sizeToScene();
// this.stage.sizeToScene();
this.pane3.requestLayout();
break;
}
}
最初pane3
不可见,并且可以从对grid
的{{1}}方法的调用中读取,它跨越两行,位于前两个窗格的右侧。当我按F10键时,我想切换它的可见性,因此我的舞台应该首先扩展(并且这确实有效),但是当我隐藏那个add
窗格时,整个窗口应该折叠(只适合第一个两个可见窗格) ),但是它不起作用,并且窗口的大小与打开pane3
的大小相同。我该如何解决?
编辑:如前所述,这实际上与另一个问题相似。密钥为pane3
(或绑定这些属性)。我刚刚确认,有了这个小的更改,窗口就可以正常折叠。感谢您发现类似的问题!