2013-12-18 10 views
12

Ich möchte den Inhalt einer bestimmten Zelle in einer Gridpane abrufen. Ich habe mit demjavafx GridPane retrive spezifisch Zelleninhalt

setConstraints(btt , 0 ,1) 

setConstraints(btt , 0 ,2) 

getChildren().add.... 

In meinem Fall setzen Tasten in den Zellen der GridPane.getChildren.get(10) nicht gut ist. Ich möchte direkt zur Zelle gehen (4,2) und den Inhalt holen.

+0

Vielen Dank für youe –

Antwort

19

Nun, ich denke, wenn es keine Lösung ist, einen bestimmten Knoten aus gridpane erhalten durch Spalten- und Zeilenindex ist, ich habe eine Funktion, das zu tun,

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

Vorausgesetzt, dass Sie eine 8x8 girdPane, wo i sind die Zeilen und j ist die Spalte, können Sie schreiben:

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

der Rückgabetyp ist ein Objekt, so werden Sie es werfen müssen, in meinem Fall ist es:

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

+1

antwortet Die in einigen Fällen zutreffen mag, aber Kinder Liste nicht unbedingt in der Reihenfolge der Zeile/Spalte gehalten und kann später mit GridPane.setRowIndex() usw. geändert werden .. – Adam

+0

Ich habe nie setRowIndex() verwendet, also kann ich nicht viel sagen. Diese Lösung hat für mich funktioniert, und ich glaube, dass Sie die Arbeit meistens erledigen sollten, wenn Sie die standardmäßigen Zeilen-/Spaltenindizes nicht ändern. –