Criei meu tableModel seguindo um artigo aki do guj, fiz tudo q tava escrito pra fazer, só que quando eu mando rodar, nao cria o nome das colunas, só aparece os dados, aluem pode me ajudar, o codigo q eu estou usando é o seguinte:
TTableModel:
/*
* TTable.java
*
* Created on 4 de Outubro de 2008, 15:22
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package componentes;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.table.AbstractTableModel;
/**
*
* @author Administrador
*/
public class TTableModel extends AbstractTableModel{
private ArrayList linhas = null;
private String [] colunas = null;
private boolean [] colsEdicao;
/** Creates a new instance of TTable */
public TTableModel(ArrayList dados, String[] colunas, boolean [] edicao) {
setLinhas(dados);
setColunas(colunas);
colsEdicao = edicao;
}
public String[] getColunas() {
return colunas;
}
public ArrayList getLinhas() {
return linhas;
}
public void setColunas(String[] strings) {
colunas = strings;
}
public void setLinhas(ArrayList list) {
linhas = list;
}
public int getRowCount() {
return getLinhas().size();
}
public int getColumnCount() {
return getColunas().length;
}
public String getColumnName(int col){
return getColunas()[col];
}
public boolean isCellEditable(int row, int col){
return colsEdicao[col];
}
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];
}
public void setValueAt(Object value, int row, int col){
// Obtem a linha, que é uma String []
String [] linha = (String [])getLinhas().get(row);
// Altera o conteudo no indice da coluna passado
linha[col] = (String)value;
// dispara o evento de celula alterada
fireTableCellUpdated(row,col);
}
public void addRow( String [] dadosLinha){
getLinhas().add(dadosLinha);
// Informa a jtable de que houve linhas incluidas no modelo
// COmo adicionamos no final, pegamos o tamanho total do modelo
// menos 1 para obter a linha incluida.
int linha = getLinhas().size()-1;
fireTableRowsInserted(linha,linha);
return;
}
public void removeRow(int row){
getLinhas().remove(0);
// informa a jtable que houve dados deletados passando a
// linha reovida
fireTableRowsDeleted(row,row);
}
public boolean removeRow(String val, int col){
// obtem o iterator
Iterator i = getLinhas().iterator();
int linha = 0;
// Faz um looping em cima das linhas
while(i.hasNext()){
// Obtem as colunas da linha atual
String[] linhaCorrente = (String[])i.next();
linha++;
// compara o conteudo String da linha atual na coluna desejada
// com o valor informado
if( linhaCorrente[col].equals(val) ){
getLinhas().remove(linha);
// informa a jtable que houve dados deletados passando a
// linha removida
fireTableRowsDeleted(linha,linha);
return true;
}
}
// Nao encontrou nada
return false;
}
}
e o frame q eu estou criando a tabela é o seguinte (vou colar sómente onde crio a tabela e coloco no frame, pq o ressto é o codigo q o netbeans gera):
public class TesteTabela extends javax.swing.JFrame {
private TTableModel modelo;
/** Creates new form TesteTabela */
public TesteTabela() {
initComponents();
JTable tabela = criaTabela();
tabela.setBounds(50,100,300,100);
this.add(tabela);
}
public JTable criaTabela(){
ArrayList dados = new ArrayList();
String[] colunas = new String[] { "Estado", "Cidade" };
boolean [] edicao = {false, true};
// 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" });
modelo = new TTableModel(dados, colunas, edicao);
JTable jtable = new JTable(modelo);
jtable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
return jtable;
}
}
aguardo resposta