Положение разделителя JavaFX не работает - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть разделенная панель с начальным положением делителя, установленным на 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

Хорошо для этого делитель равен 1, поэтому отображается только одна панель, теперь я увеличу окно:

enter image description here

Положение делителя явно изменилось , Если вы прочитали код, который я предоставил ранее, вы можете увидеть 3 строки печати в качестве контрольных точек, вот их вывод после запуска приложения:

Initialize: 1.0
Main: 0.9933110367892977
Метод: 0.9933110367892977

Спасибо!

...