在Swing中,我们可以在JSplitPane上使用
setResizeWeight()
来确定SplitPane的哪个部分获得了可用空间. JavaFX 2.2中是否有等效的方法?我只能找到并不真正做我想要的setDividerPosition()方法(每次大小改变时我都可以手动调用它,但如果可能的话,我想避免这样做.)
我也可以调用setResizableWithParent(false),但这又不能提供我所追求的那种控制.
解决方法
在浏览SplitPane的API时,我发现了这个静态函数–
setResizableWithParent(root,Boolean.FALSE),它提供了与JSplitPane中的setResizeWeight()类似的功能.
- SplitPane sp = new SplitPane();
- final StackPane sp1 = new StackPane();
- sp1.getChildren().add(new Button("Button One"));
- final StackPane sp2 = new StackPane();
- sp2.getChildren().add(new Button("Button Two"));
- final StackPane sp3 = new StackPane();
- sp3.getChildren().add(new Button("Button Three"));
- sp.getItems().addAll(sp1,sp2,sp3);
- sp.setDividerPositions(0.3f,0.6f,0.9f);
- SplitPane.setResizableWithParent(sp1,Boolean.FALSE);
- primaryStage.setScene(new Scene(sp,300,200));
- primaryStage.setTitle("Welcome to JavaFX!");
- primaryStage.sizeToScene();
- primaryStage.show();
setResizableWithParent可以模仿setResizeWeight(0)和setResizeWeight(1)的值,但两者之间绝对没有.基本上,节点可以是自由流动的或固定的.