Problema com DefaultTableModel

Olá pessoal do GUJ!

Estou com um problema com o DefaultTableModel. Criei uma tabela da seguinte forma:

[code]String[] colunas = new String []{“Estado”,“Cidade”};
String[][] dados = new String [][] {
{“SP”,“Sao Paulo”},
{“RJ”,“Rio de Janeiro”},
{“RN”,“Rio Grande do Norte”},
{“PR”,“Parana”}
};

DefaultTableModel dtm = new DefaultTableModel(dados, colunas) {
public boolean isCellEditable(int row, int col) {
return false;
}
};

JTable jTable1 = new JTable(dtm); [/code]

Até aí tudo bem, porém quando vou me referenciar a valores da jTable1, assim por exemplo:

Nesse momento é disparada uma excessão: NullPointerException.

Alguém sabe se quando utilizo um modelo, preciso me referenciar diferentemente a JTable ou ao modelo???

Agradeço a ajuda de todos…

esta correto o codigo, pode usar o getValueAt direto da JTable sim…
vai ver é pq nao te nenhuma linha selecionada hehehe

Valeu Axel-Foley! mas existe uma linha selecionada sim… continua o meu problema…

Ja tentou checar a origem da NullPointerException? Qual o stack trace?

No e.printStackTrace foi capturado:

java.lang.NullPointerException at PreSala.Cadastrar(PreSala.java:169) at PreSala.access$300(PreSala.java:19) at PreSala$5.actionPerformed(PreSala.java:135)

Verifique meu código:
linha 169:

Nessa linha está o erro.

linha 19:

Nessa linha é feita a declaração da classe.

linha 135:

jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cadastrar(evt); } });
Nessa linha quando se clica no botão, está sendo chamado o evento que contém o JOptionPane para mostrar o valor capturado da linha da tabela selecionada na coluna 0.

Não sei o que está acontecendo…
Por favor, me ajudem…

Sendo que esse é a linha do NullPointer:

JOptionPane.showMessageDialog(null, jTable1.getValueAt(jTable1.getSelectedRow(), 0));

O problem só pode ser que jTable1 está null(pelo menos não consegui pensar em outra causa).

JOptionPane.showMessageDialog(null, null);

Não causa exceção nenhuma. E ainda se causasse, o primeiro linha de stack trace seria tipo de…

at javax.swing.JOptionPane(...)
at PreSala.Cadastrar(PreSala.java:169)
at PreSala.access$300(PreSala.java:19)
at PreSala$5.actionPerformed(PreSala.java:135)

Então só resta o jTable1 estar null. Verifica que a referencia mesmo está sendo colocado nele.

-Sami

Sami Koivu obrigado pela atenção…

Vc quis dizer que o jTable1 está null, ou seja, não tem nehum valor? Isso não acontece, estou clicando e selecionando uma linha com valores em todas as colunas.

Help me…

Olá,

Tô querendo dizer é que o variavel jTable1 não está referindo ao objeto nenhum. As células da tabela podem ter valores, sim, mas o jTable1 não está referindo à sua tabela por qualquer razão.

Tente inserir

System.out.println("valor do jTable1: " + jTable1);

na linha 169, antes de chamada do JOptionPane pra verificar isso.

Se eu estou certo vai ser

(Desculpas, meu português mesmo não tá tão bom)

-Sami

Valeu!!! Agradeço a todos que me auxiliaram!
Descobri meu erro: estava fazendo isso:

e depois assim:

isso fazia com que o jTable1 fosse declarado novamente e, por consequência tivesse o valor null.

corrigi assim:

e funcionou normalmente…

Obrigado a todos…

Pra evitar que esse erro aconteca novamente, de uma olhada nas configuracoes do compilador do Eclipse (presumindo que vc esta usando Eclipse…), e ligue a warning para redefinicao de variaveis em escopo local :wink: