Pergunta

Se eu quiser adicionar uma linha de campos de texto programaticamente em JavaFx, posso simplesmente usar o método gridpane add

Isso adiciona um conjunto de campos de texto à linha 1.

for (int i = 0; i < Fields.size(); i++) {
   gridpane.add(new TextField(), i, 1);
}

Da mesma forma, como excluo uma linha?Não encontro um método adequado para excluir uma linha/coluna de maneira conveniente no JavaFX.

Foi útil?

Solução

Não existe um método diretamente equivalente.Para remover nós, basta usargridpane.getChildren().remove(...); ou gridpane.getChildren().removeAll(...); e passe os nós que deseja remover do painel.

Outras dicas

No Java 8+, você pode usar removeIf:

gridPane.getChildren().removeIf(node -> GridPane.getRowIndex(node) == rowNumber);

Embargo
Se remover itens do 0ª linha, verifique também GridPane.getRowIndex(node) == null, ou seja,

node -> GridPane.getRowIndex(node) == null || GridPane.getRowIndex(node) == 0

(Acho que isso é JavaFX deixando o número da linha como null quando nenhum número de linha é fornecido no elemento correspondente em FXML, mesmo que não fornecer nenhum número de linha em FXML signifique que o elemento está na 0ª linha, já que a linha padrão é a 0ª linha.)

Isso funciona muito bem:

while(MainGridPane.getRowConstraints().size() > 0){
    MainGridPane.getRowConstraints().remove(0);
}

while(MainGridPane.getColumnConstraints().size() > 0){
    MainGridPane.getColumnConstraints().remove(0);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top