2015-01-29 5 views
1

У меня есть следующий код, который максимизирует окно при нажатии кнопки максимизации (зеленый в строке заголовка). Однако он не возвращается к исходному размеру (900x600), когда он снова нажимается, когда он находится в максимизированном положении. Я вижу, что только левая сторона сжимается.Восстановить размер окна до исходного фиксированного размера в JavaFx 8

//set the original size   
final Scene homeScene = new Scene(homePane,900,600); 

...

primaryStage.maximizedProperty().addListener(new ChangeListener<Boolean>() { 
     @Override 
     public void changed(ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1) { 

      primaryStage.setX(bounds.getMinX()); 
      primaryStage.setY(bounds.getMinY()); 
      primaryStage.setWidth(bounds.getWidth()); 
      primaryStage.setHeight(bounds.getHeight()); 
     } 
    }); 

Как вернуть исходное положение? Метод «Изменен» не запускается при повторном нажатии кнопки максимизации, иначе я бы установил исходный размер программным путем.

ответ

0

После код прекрасно работает для прослушивания развернутого состояния Stage:

primaryStage.maximizedProperty().addListener((w,o,n)->System.out.println(n)); 

Используют обычай (непараметризованный) Stage, то вы можете захотеть взглянуть на Undecorator, который сделал просто это.

+0

Этот код ведет себя точно так же, как и код, который я опубликовал. Он печатает true, когда я максимизирую окно, но ничего не печатаю, когда снова нажимаю кнопку максимизации. Я что-то пропустил. Я использую Normal Stage со всеми кнопками сверху. – SoulMan

+0

В моем случае он также печатает 'false'. Какую версию Java вы используете, операционная система? – eckig

+0

Java 8, Mac. Но это достаточно хорошо, если работает только для окон. Лемм попытается выиграть. – SoulMan

 Смежные вопросы

  • Нет связанных вопросов^_^