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