2013-12-18 2 views
12

Я хочу получить содержимое одной конкретной ячейки в Gridpane. Я поставил кнопки в ячейках сjavafx GridPane извлекает конкретное содержимое ячейки

setConstraints(btt , 0 ,1) 

setConstraints(btt , 0 ,2) 

getChildren().add.... 

В моем случае GridPane.getChildren.get(10) не хорошо. Я хочу пойти прямо в ячейку (4,2) и получить контент.

+0

Большое спасибо за youe ответ –

ответ

19

Ну, я думаю, если нет решения, чтобы получить конкретный узел из gridpane по является столбец и номер строки, у меня есть функция, чтобы сделать это,

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; 
} 
2

Предполагая, что у вас есть 8x8 girdPane где i является строки и j это столбец, вы можете написать:

myGridPane.getChildren().get(i*8+j)

Возвращаемый тип является объектом, так что вам придется бросить его, в моем случае это:

(StackPane) (myGridPane.getChildren().get(i*8+j))

+1

Это может быть верно в некоторых случаях, но список детей, не обязательно поддерживается в порядке строки/столбца и могут быть изменены позже с GridPane.setRowIndex() и т.д .. – Adam

+0

Я никогда не использовал setRowIndex(), поэтому не могу сказать много. Это решение сработало для меня, и я считаю, что это должно выполняться большую часть времени, когда вы не изменяете индексы строк/столбцов по умолчанию. –

Смежные вопросы