Estou numa luta desigual com um JTable que é o seguinte. Estou tentando capturar uma informação de uma determinada célula porém está dando erro sempre. Quando ele testa a condição if o código sempre vai para o catch da instrução try. Já tentei de tudo mas não consigo evoluir.
Segue código abaixo.
if (jTableAgenda.getValueAt(jTableAgenda.getSelectedRow(), 5).toString().equals("X")) {
jPanelDadosTabela.setBackground(new Color(240, 240, 240));
} else {
jLabelExecutado.setText(jTableAgenda.getValueAt(jTableAgenda.getSelectedRow(), 5).toString());
jPanelDadosTabela.setBackground(new Color(182, 191, 255));
}
O erro que aparece é
java.lang.NullPointerException.
O NullPointerException nunca acontece por acaso. E ele só irá ocorrer caso você esteja tentando acessar um método ou atributo de um objeto que é nulo.
Embora o java permita que você vá encadeando as chamadas a métodos e blocos, isso acaba gerando uma certa poluição.
Assim sendo, o ideal é que você vá isolando as coisas, para deixar mais legível e conseguir entender o erro.
O trecho acima poderia ser:
int selectedRow = jTableAgenda,getSelectedRow();
Object valueAtCellInSelectedRow = jTableAgenda.getValueAt(selectedRow, 5).toString();
String valor = null;
if(null != valueAtCellInSelectedRow) {
valor = valueAtCellInSelectedRow.toString();
}
if("X".equals(valor)) {
jPanelDadosTabela.setBackground(new Color(240, 240, 240));
} else {
jLabelExecutado.setText(jTableAgenda.getValueAt(jTableAgenda.getSelectedRow(), 5).toString());
jPanelDadosTabela.setBackground(new Color(182, 191, 255));
}
Percebe como fica mais bonito?
Mas, o código acima ainda pode dar problemas.
A melhor solução é apenas identificar a linha selecionada e invocar um método que recupere o valor desejado no TableModel. Aí sim você vai garantir que algo será retornado.
Luis boa noite!!!
Vc arrebentou!! Funcionou perfeito e muito obrigado pelo belo esclarecimento.
Abraco.