JAVAFX 2: Come eliminare una riga o una colonna in Gridpane
Domanda
Se voglio aggiungere una riga di campi di testo programmaticamente in JAVAFX, posso semplicemente usare il metodo GRIDPANE ADD
for (int i = 0; i < Fields.size(); i++) {
gridpane.add(new TextField(), i, 1);
}
.
Allo stesso modo, come posso cancellare una riga?.Non trovo un metodo adatto per eliminare una riga / colonna convocatamente in javafx.
Soluzione
Non c'è metodo direttamente equivalente.Per rimuovere i nodi, solo usare
gridpane.getChildren().remove(...);
o gridpane.getChildren().removeAll(...);
e passano nei nodi che si desidera rimuovere dal riquadro.
Altri suggerimenti
In Java 8+, è possibile utilizzare removeIf
:
gridPane.getChildren().removeIf(node -> GridPane.getRowIndex(node) == rowNumber);
.
caveat
Se si rimuove gli elementi dalla 0th Row , controlla anche GridPane.getRowIndex(node) == null
, I.e.,
node -> GridPane.getRowIndex(node) == null || GridPane.getRowIndex(node) == 0
.
(Penso che questo sia JAVAFX che lascia il numero di riga come null
quando nessun numero di riga viene fornito nell'elemento corrispondente in FXML, anche se non dando alcun numero di riga in FXML significa che l'elemento è nella riga di predefinita, poiché la riga predefinita èla 0a fila.)
funziona abbastanza bene:
while(MainGridPane.getRowConstraints().size() > 0){
MainGridPane.getRowConstraints().remove(0);
}
while(MainGridPane.getColumnConstraints().size() > 0){
MainGridPane.getColumnConstraints().remove(0);
}
.