2015-02-04 44 views
5

Tôi có một vấn đề mà đã được lái xe cho tôi hạt cho một vài ngày.JavaFX Làm thế nào để thay đổi chiều cao GridPane hàng lập trình

Tôi có một GridPane và tôi muốn ẩn hàng đầu tiên khi tôi bấm vào một nút.
Đây là tập tin FXML

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

Nếu tôi nhấp vào nút Tôi làm điều này

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

Sau khi tôi nhấp vào nút, nhãn là vô hình như mong đợi nhưng chiều cao của hàng đầu tiên không thay đổi chút nào. Tôi có phải cập nhật GridPane sau khi tôi thay đổi các ràng buộc hàng hoặc có bất kỳ điều gì khác cần làm không?

THANK YOU!

+0

Bạn có muốn giấu hàng hoặc xóa hàng? – ItachiUchiha

+0

Tôi chỉ muốn ẩn hàng. Nó sẽ được sử dụng cho chức năng lọc từ tìm kiếm – stefOCDP

Trả lời

6

Node.setVisible() chỉ Toggles trạng thái hiển thị của một Node.

Để loại trừ Node khỏi tính toán bố cục bố mẹ, bạn cũng phải đặt trạng thái được quản lý của nó, bằng cách gọi Node.setManaged(false).

+0

Cảm ơn bạn rất nhiều, hoạt động tốt. Có thể làm cho nó có thể nhìn thấy một lần nữa. Bởi vì chỉ Node.setManaged (true) và Node.serVisible (true) không hoạt động. – stefOCDP

+0

Có, 'setVisibible (true)' và 'setManaged (true)' sẽ làm cho nó xuất hiện lại. – eckig

+0

Cảm ơn bạn đã làm việc. Tôi vừa bị lỗi đánh máy – stefOCDP

Các vấn đề liên quan