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