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

4 respostas
M

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:

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;
    }

}

4 Respostas

carlos.e.a

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.

M

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.

M

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.

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.e.a

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.

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é!

Criado 22 de janeiro de 2012
Ultima resposta 23 de jan. de 2012
Respostas 4
Participantes 2