JavaFX 2 Pane Dynamic Resizing

Giannis picture Giannis · Mar 16, 2013 · Viewed 7.1k times · Source

I have a Pane within my interface. On that Pane I add Shape objects and drag them around. I what to make my Pane bigger when one Shape reaches the visual bounds of the Pane. As a prototype, I try to make it bigger whenever I click my mouse. The Pane is child (within) a ScrollPane. Here is my code:

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

When I click twice I get the following result:

602.0 574.0
702.0 674.0
602.0 574.0
702.0 674.0

So the Pane basically resizes briefly and then returns to its original size.On the FXML, the max height and width are set to USE_PREF_SIZE as well as MAX_VALUE. I also tried to increase maxWidth/height before calling resize but made no difference. Any advice?

Answer

Giannis picture Giannis · Mar 17, 2013

I have been using wrong method as well as fxml option. The way to do it was with setPrefSize method, and then set the max size at USE_PREF in fxml file.