我有一个拆分窗格,初始分隔位置设置为 0.2,问题是在运行应用程序后位置更改为 0.5,我读到这是由于stage.setMaximized(true);
我检查了这个问题,但答案暗示当前的拆分窗格和主舞台在同一个班级,但就我而言,我必须在控制器班级工作。
我试图Main.getStage().showingProperty().addListener(...)
在initialize()
方法中显示属性的阶段添加一个侦听器,但它不起作用,它说阶段为空,我猜是因为 initialize() 之前运行Main.start()
那么我怎样才能让我的拆分窗格从一个固定的分隔位置开始呢?
谢谢!
编辑 :
我做了一个简单的例子来暴露我的问题:
主要的
@Override
public void start(Stage primaryStage) throws Exception {
FXMLLoader loader=new FXMLLoader(getClass().getResource("views/test.fxml"));
mainStage=primaryStage;
mainStage.setScene(new Scene(loader.load()));
mainStage.show();
Controller_Test ct=loader.getController();
System.out.println("Main:"+ct.sp.getDividerPositions()[0]);
ct.getDividerPos();
}
Controller_Test
@FXML
public SplitPane sp;
@FXML
public void initialize() {
System.out.println("Initialize:"+sp.getDividerPositions()[0]);
}
public void getDividerPos(){
System.out.println("Method:"+sp.getDividerPositions()[0]);
}
现在我将拆分窗格分隔线设置为 1,这意味着第二个窗格不应显示,我运行应用程序,结果如下:
好的,这个分隔线是 1,所以只显示一个窗格,现在我将最大化窗口:
分频器位置明显改变。如果您阅读我之前提供的代码,您可以看到 3 个打印行作为检查点,这是它们在运行应用程序后的输出:
初始化:1.0
主要:0.9933110367892977
方法:0.9933110367892977
谢谢!