JavaFX 2 панели динамического изменения размера

У меня есть панель в моем интерфейсе. На этой панели я добавляю объекты Shape и перетаскиваю их. Я хочу увеличить мою панель, когда одна фигура достигает визуальных границ панели. В качестве прототипа я стараюсь увеличивать его всякий раз, когда щелкаю мышью. Панель является дочерней (внутри) ScrollPane. Вот мой код:

    paneArea.setOnMouseClicked(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent mouseEvent) {
            System.out.println(paneArea.getWidth()+" "+paneArea.getHeight());
            paneArea.resize(paneArea.getWidth() + 100, paneArea.getHeight() + 100);                
            System.out.println(paneArea.getWidth()+" "+paneArea.getHeight());
        }
    });

Когда я нажимаю дважды, я получаю следующий результат:

602.0 574.0
702.0 674.0
602.0 574.0
702.0 674.0

Таким образом, панель в основном ненадолго изменяет размеры и затем возвращается к своему первоначальному размеру. На FXML максимальная высота и ширина устанавливаются как USE_PREF_SIZE, а также MAX_VALUE. Я также пытался увеличить maxWidth/height перед вызовом resize, но без разницы. Любой совет?

2 ответа

Решение

Я использовал неправильный метод, а также параметр fxml. Это можно сделать с помощью метода setPrefSize, а затем установить максимальный размер в USE_PREF в файле fxml.

Ваш код неверен. Вместо того, чтобы использовать

paneArea.resize(paneArea.getWidth() + 100, paneArea.getHeight() + 100); 

использование

paneArea.setPrefWidth(paneArea.getWidth() + 100) ; 
paneArea.setPrefHeight(paneArea.getHeight)() + 100) ;
Другие вопросы по тегам