Pessoal, preciso pegar todos os dados de uma Linha (Row) de uma TableView. Usei o código abaixo para pegar
o indice da linha (row) selecionada e com este indice pegar os dados de todas as células da linha. Não dá erro,
porem o conteudo do String dadosDaLinha não fica com os valores reais. Deem uma olhada:
oTableView.setRowFactory (tv ->
{
TableRow<ObservableList> oRow = new TableRow<>();
oRow.setOnMouseClicked (event ->
{
if (event.getClickCount() == 1 && (!oRow.isEmpty()))
{
int index = oTableView.getSelectionModel().getSelectedIndex();
String dadosDaLinha = oTableView.getItems().get(index).toString();
}
});
return oRow;
});
Grato.
Complementando: o indice é obtido perfeitamente. Só não consigo pegar o conteúdo de toda a Linha
como um String. Pelo q vi na WEB, a Linha da Tabela convertida para String viria com separador (,) entre
os dados de cada célula da linha. Usei o println com o dadosDaLinha.intern() para ver o conteúdo “limpo”,
mas isso não ocorre.
Como é montada a sua tabela? através de uma Objeto de modelo?
se for através de um objeto de modelo, você pode fazer dessa forma:
// checa se uma linha foi selecionada
if (table_empresas.getSelectionModel().getSelectedItem() != null) {
ClasseModelo modelo = table.getSelectionModel().getSelectedItem();
}
Daí os dados todos serão carregados para o seu model ‘ClasseModelo’ para você usar como quiser… ex:
Sys.out.println(modelo.getId());
cria um método com os dados acima, e chama esse método no evento onClick da sua tabela.