У меня есть разделенная панель с начальным положением делителя, установленным на 0,2, проблема в том, что после запуска приложения позиция меняется на 0,5, я прочитал, что это связано с stage.setMaximized(true);
Я проверил этот вопрос , но ответы подразумевают, что текущая разделенная панель и основная сцена находятся в одном классе, но в моем случае я должен работать в классе контроллера.
Я пытался добавить слушателя к показателю свойства stage * Main.getStage().showingProperty().addListener(...)
в методе initialize()
, но он не работает, он говорит, что stage равен нулю, я думаю, это потому, что initialize () запускается раньше Main.start()
Итак, как мне начать разделенную панель с фиксированной позиции делителя?
Спасибо!
РЕДАКТИРОВАТЬ:
Я сделал простой пример, чтобы раскрыть мою проблему:
Main
@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, что означает, что вторая панель не должна отображаться, я запускаю приложение и вот результат:
![window at launch](https://i.stack.imgur.com/kcGJb.png)
Хорошо для этого делитель равен 1, поэтому отображается только одна панель, теперь я увеличу окно:
![enter image description here](https://i.stack.imgur.com/LGfnP.png)
Положение делителя явно изменилось , Если вы прочитали код, который я предоставил ранее, вы можете увидеть 3 строки печати в качестве контрольных точек, вот их вывод после запуска приложения:
Initialize: 1.0
Main: 0.9933110367892977
Метод: 0.9933110367892977
Спасибо!