I want to retrieve the content of one specific cell in a Gridpane. I have put buttons in the cells with the
setConstraints(btt , 0 ,1 )
setConstraints(btt , 0 ,2 )
getChildren().add....
In my case the GridPane.getChildren.get(10)
is not good. I want to go directly to the cell(4,2) and get its content.
GridPane lays out its children within a flexible grid of rows and columns. If a border and/or padding is set, then its content will be layed out within those insets. A child may be placed anywhere within the grid and may span multiple rows/columns.
You can get the row index and column index by utilising the static methods getRowIndex() and getColumnIndex() which are located in the GridPane class. System. out. println("Row: " + GridPane.
I've found the easiest way to do this is to create an HBox and add the GridPane and the VBox to it. Set the "fillHeight" property to true on the HBox. The "fillWidth" properties on the GridPane and VBox should be set to true, and their HGrow properties set to "always," (or "sometimes").
A way to clear the GridPane and maintain the Gridlines is as follow : Node node = grid. getChildren(). get(0); grid.
Well I guess if there is no solution to get a specific node from gridpane by is column and row index, I have a function to do that,
private Node getNodeFromGridPane(GridPane gridPane, int col, int row) {
for (Node node : gridPane.getChildren()) {
if (GridPane.getColumnIndex(node) == col && GridPane.getRowIndex(node) == row) {
return node;
}
}
return null;
}
Assuming you have an 8x8 girdPane where i
is the rows and j
is the column, you can write:
myGridPane.getChildren().get(i*8+j)
The return type is an object, so you will have to cast it, in my case it's:
(StackPane) (myGridPane.getChildren().get(i*8+j))
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