Onde está o problema?

Ae galera criei meu proprio modelo de tabela e criei uma jtable usandoesse modelo. Defini o titulo das colunas como “Estado” e “Cidade”. Porém quando rodo o programa ele exibe Colunas: A e B ao invés de “Estado” e “Cidade”.

Não to enxergando onde esta o problema.

Olha o codigo, alguem sabe o problema? :

Código do modelo:

package tabelas;

import java.util.ArrayList;

import javax.swing.table.AbstractTableModel;

public class MeuModelo extends AbstractTableModel
{

	private ArrayList linhas;

	public String[] colunas;

	public MeuModelo(ArrayList dados, String[] colunas)
	{
		System.out.println(colunas[0]);
		this.setColunas(colunas);
		this.setLinhas(dados);

	}

	@Override
	public int getColumnCount()
	{
		return colunas.length;
	}

	@Override
	public int getRowCount()
	{
		return linhas.size();
	}

	@Override
	public Object getValueAt(int rowIndex, int columnIndex)
	{
		String[] linha = (String[]) getLinhas().get(rowIndex);
		return linha[columnIndex];
	}

	public Class getColumnClass(int c)
	{
		return getValueAt(0, c).getClass();
	}

	public ArrayList getLinhas()
	{
		return linhas;
	}

	public void setLinhas(ArrayList linhas)
	{
		this.linhas = linhas;
	}

	public String[] getColunas()
	{
		return colunas;
	}

	public void setColunas(String[] colunas)
	{
		this.colunas = colunas;
	}
}

Código da classe que cria a tabela usando o modelo:

import java.awt.Dimension;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;

import tabelas.MeuModelo;

public class Principal extends JFrame
{
	private JScrollPane painel;

	public Principal()
	{
		super();
		super.setSize(400, 400);
		painel = new JScrollPane();
		painel.setViewportView(createJTable());
		this.getContentPane().add(painel);
		super.pack();
		super.show();
	}

	public JTable createJTable()
	{

		ArrayList dados = new ArrayList();
		String[] colunas = new String[] { "Estado", "Cidade" };

		// Alimenta as linhas de dados
		dados.add(new String[] { "SP", "São Paulo" });
		dados.add(new String[] { "RJ", "Rio de Janeiro" });
		dados.add(new String[] { "RN", "Rio Grande do Norte" });
		dados.add(new String[] { "ES", "Espirito Santo" });

		MeuModelo modelo = new MeuModelo(dados, colunas);
		JTable jtable = new JTable(modelo);

		jtable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		jtable.setPreferredScrollableViewportSize(new Dimension(600, 400));  

		return jtable;

	}

	public static void main(String... args)
	{
		new Principal();
	}
}

Parece que está faltando algum parâmetro que você não passou, ele não está identificando esse nome de coluna!

Verifica a API direito.

der, eskeci de criar o método

public String getColumnName(int col)
{
	return getColunas()[col];
}

“A JTable irá chamar este método para obter o titulo da coluna e colocar no Header, quando suas colunas forem criadas automaticamente a partir do seu modelo.”

valeu