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) ;