I have a problem that has been driving me nuts for a couple of days.
I have a GridPane and I want to hide the first row when I click on a button.
This is the FXML file
<VBox prefHeight="200.0" prefWidth="100.0">
<children>
<Button fx:id="buttonTest" mnemonicParsing="false" onAction="#handleButtonTestAction" text="Button" />
<GridPane fx:id="gridPaneTest" gridLinesVisible="true" layoutX="0.5" layoutY="0.5" BorderPane.alignment="CENTER">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Label fx:id="labelTopLeft" text="top left">
<font>
<Font size="15.0" />
</font>
</Label>
<Label fx:id="labelTopRight" text="top right" GridPane.columnIndex="1">
<font>
<Font size="15.0" />
</font>
</Label>
<Label text="center left" GridPane.rowIndex="1">
<font>
<Font size="15.0" />
</font>
</Label>
<Label text="center right" GridPane.columnIndex="1" GridPane.rowIndex="1">
<font>
<Font size="15.0" />
</font>
</Label>
<Label text="bottom left" GridPane.rowIndex="2">
<font>
<Font size="15.0" />
</font>
</Label>
<Label text="bottom right" GridPane.columnIndex="1" GridPane.rowIndex="2">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</GridPane>
</children>
</VBox>
If I click on the Button I do this
@FXML
public void handleButtonTestAction() {
labelTopLeft.setVisible(false);
labelTopRight.setVisible(false);
gridPaneTest.getRowConstraints().get(0).setMinHeight(0);
gridPaneTest.getRowConstraints().get(0).setPrefHeight(0);
gridPaneTest.getRowConstraints().get(0).setMaxHeight(0);
}
After I click the Button, the labels are invisible as expected but the height of the first row doesn't change at all. Do I have to update the GridPane after I change the row constraints or is there anything else to do?
THANK YOU!
Node.setVisible() just toggles the visibility state of a Node.
To exclude a Node from its parents layout calculations you additionally have to set its managed state, by calling Node.setManaged(false).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With