Boa noite.
Estou tentanto usar o JTable através do Netbeans e estou tendo um problema para começar. A idéia é fazer uma tabela mostrar somente números inteiros que leio de um arquivo de texto. Eu primeiro leio o arquivo passo todos os valores para uma matriz e depois faço o JTable mostrar na tela.
Li o tutorial http://devsv.wordpress.com/2012/07/08/como-implementar-um-tablemodel/ e tentei fazer mais ou menos igual.
A primeira coisa que fiz foi estender a classe AbstractTableModel como mostrado abaixo:
[code]import java.util.List;
import javax.swing.table.AbstractTableModel;
public class Tabela extends AbstractTableModel
{
List<int[]> matriz;// Será uma matriz de valores inteiros que eu tentarei mostrar na tabela.
// O método abaixo receberá uma matriz já formada por outra classe e definirá ela como atributo desta classe para eu poder mostrar na tabela. Como não posso herdar a classe que contém a tabela, a única solução que encontrei foi essa.
public void setMatriz(List<int[]> matriz)
{
this.matriz = matriz;
}
@Override
public int getRowCount()
{
return this.matriz.size();
}
@Override
public int getColumnCount()
{
return this.matriz.get(0).length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex)
{
throw new UnsupportedOperationException("Not supported yet.");
}
}[/code]
Na classe “Inteface”, que contém todos os objetos que mostrarei na tela, tentei instanciar JTable de um modo diferente do padrão feito automaticamente pelo NetBeans. Tentei imitar o que vi neste link:
http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/table/TableModel.html#setValueAt(java.lang.Object,%20int,%20int)
[quote]TableModel myData = new MyTableModel();
JTable table = new JTable(myData);[/quote]
Então lá na classe eu fiz assim:
// No momento em que faço a instanciação de Tabela, como abaixo, a matriz com os valores lidos do arquivo ainda não está formada.
private Tabela tab = new Tabela();
jTable1 = new javax.swing.JTable(tab);// A declaração de JTable não está aqui. Achei desnecessário mostrar.
Mas quando tento compilar, acontece a seguinte exceção:
[quote]Exception in thread “main” java.lang.NullPointerException
at Tabela.getColumnCount(Tabela.java:22)
at javax.swing.JTable.createDefaultColumnsFromModel(JTable.java:1290)
at javax.swing.JTable.tableChanged(JTable.java:4389)
at javax.swing.JTable.setModel(JTable.java:3691)
at javax.swing.JTable.(JTable.java:633)
at javax.swing.JTable.(JTable.java:574)
at Interface.initComponents(Interface.java:94)
at Interface.(Interface.java:15)
at Main.main(Main.java:16)
Java Result: 1[/quote]
O que está acontecendo?