[Resolvido]Tabela não Mostra o Titulo da Coluna. Só mostra as Linhas

Galera, criei meu próprio modelo de tabela seguindo o artigo aqui do GUJ.

As linhas estão aparecendo de boa, agora o titulo das colunas não aparecem, o que esta errado?

Agradeço desde Já.

O meu código ficou assim:

[code]import java.awt.BorderLayout;
import java.util.ArrayList;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.AbstractTableModel;

public class SimpleTableModel extends AbstractTableModel {

private ArrayList linhas = null;  
private String[] colunastabela = null;  

private String[] getColunas() {
    return colunastabela;
}  
private ArrayList getLinhas() {
    return linhas;
}  
private void setColunas(String[] strings) {
    colunastabela = strings;
}  
private void setLinhas(ArrayList list) {
    linhas = list;
}
@Override
public int getColumnCount() {
    return getColunas().length;
}
@Override
public int getRowCount() {
    return getLinhas().size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
        // Obtem a linha, que é uma String []
        String [] linha = (String [])getLinhas().get(rowIndex);
        // Retorna o objeto que esta na coluna
        return linha[columnIndex];
}


@Override
public String getColumnName(int columnIndex) {
        // Retorna o conteúdo do Array que possui o nome das colunas
        // no índice especificado.
        return colunastabela[columnIndex];
}

public SimpleTableModel(ArrayList dados, String[] colunas){
setLinhas(dados);
setColunas(colunas);

}

public static JTable createJTable() {

        ArrayList dados = new ArrayList();
        String[] colunas = new String[] {"Nome", "Local"};

        // Alimenta as linhas de dados
        dados.add(new String[] { "Joao", "São Paulo" });
        dados.add(new String[] { "Maria", "Rio de Janeiro" });
        dados.add(new String[] { "Francisco", "Rio Grande do Norte" });
        SimpleTableModel modelo = new SimpleTableModel(dados, colunas);
        JTable tabela = new JTable(modelo);
        tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        TelaPrincipal.jpanel_mostrar_clientes_.setLayout(new BorderLayout());
        TelaPrincipal.jpanel_mostrar_clientes_.add(tabela);
        return tabela;
}

}[/code]

Estranho cara, testei esse teu codigo aqui e funcionou normal. Apenas criei um frame e joguei essa tabela dentro. Isso me leva a crer que o erro esta em outro lugar. Voce pode estar fazendo alguma atribuicao pra tua tabela dentro do frame, ja que voce esta retornando-a no no metodo estatico.

Carlos, obrigado por sua ajuda.

Em algumas buscas no google peguei uma dica de um cara dizendo que coloca-se em um JScrollPane, e parece que vai da certo.

No teste que realizou, jogou a JTable em um JPanel direto? Pois era assim que estava fazendo.

Carlos, obrigado por sua ajuda.

Em algumas buscas no google peguei uma dica de um cara dizendo que coloca-se em um JScrollPane, e parece que vai da certo.

No teste que realizou, jogou a JTable em um JPanel direto? Pois era assim que estava fazendo.[/quote]

Foi só adicionar realmente o JScrollPane que o Titulo das Colunas começou a aparecer.

Segue alteração realizada:

public static JTable createJTable() {
            PreenchendoTabela();
            SimpleTableModel modelo = new SimpleTableModel(dados, colunas);
            tabela = new JTable(modelo);
            tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            TelaPrincipal.jpanel_mostrar_clientes_.setLayout(new BorderLayout());  
            TelaPrincipal.jScrollPane1 = new JScrollPane(tabela);//Foi só adicionar isso aqui.
            TelaPrincipal.jpanel_mostrar_clientes_.add(TelaPrincipal.jScrollPane1);//Adicionando o JscrollPane no Jpanel
            return tabela;
    }

Carlos, obrigado por sua ajuda.

Em algumas buscas no google peguei uma dica de um cara dizendo que coloca-se em um JScrollPane, e parece que vai da certo.

No teste que realizou, jogou a JTable em um JPanel direto? Pois era assim que estava fazendo.[/quote]

Foi. Na verdade joguei em um JFrame. Mas nesse caso da na mesma. Interessante isso do JScroll. Se funciona com um JScrollPane entao se voce setar setAutoResizeMode(JTable.AUTO_RESIZE_OFF) tambem deverá funcionar. Deixa até as coisas mais clean =D

Té!

1 curtida