Dúvida com JTable e AbstractTableModel [ RESOLVIDO ]

sim, mas não aparece

sim, mas não aparece[/quote]

Então posta:
a) O seu TableModel completo;
b) O trecho de código onde você associa ele ao JTable.

sim, mas não aparece[/quote]

Então posta:
a) O seu TableModel completo;
b) O trecho de código onde você associa ele ao JTable.[/quote]

[code]public class CamposTableModel extends AbstractTableModel{
private static final long serialVersionUID = 1L;
private final int COL_N = 1;
private final int COL_C = 0;

private ArrayList<Campos> campos;

public CamposTableModel() {
    campos = new ArrayList<Campos>();
}

public CamposTableModel(List<Campos> lista) {
    this();
    campos.addAll(lista);
}

public int getRowCount() {

    return campos.size();
}

public int getColumnCount() {

    return 2;
}

@Override
public String getColumnName(int column) {

    if (column == COL_N) {
        return "-";
    } else if (column == COL_C){
       return "Nomes";
    }

    return "";
}

@Override
public Class<?> getColumnClass(int columnIndex) {

    if (columnIndex == COL_N) {
        return String.class;
    } else if (columnIndex == COL_C){
       return Boolean.class;
    }
    return String.class;
}

public Object getValueAt(int rowIndex, int columnIndex) {

    Campos p = campos.get(rowIndex);

 
    if (columnIndex == COL_N) {
        return p.getNome();
    } else if (columnIndex == COL_C){
       return p.getCampos();
    }
    return "";
}

@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {

    return true;
}

public ArrayList<Campos> getCampos() {
return campos;
}

@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
   
    Campos p = campos.get(rowIndex);


    if (columnIndex == COL_NOME) {
        p.setNome(aValue.toString());
    } else if (columnIndex == COL_CHCK){
        if (p.getCampos().equals(Boolean.FALSE)){
            p.setCampos(Boolean.TRUE);
        }else{
            p.setCampos(Boolean.FALSE);
        }
    }


    fireTableCellUpdated(rowIndex, columnIndex);
   
}

public void inserir(Campos c) {
    campos.add(c);
    fireTableDataChanged();
}

public void excluir(int pos) {
    campos.remove(pos);
    fireTableDataChanged();
}

public void excluir(Campos p) {
    campos.remove(p);

    fireTableDataChanged();
}


public void ordenarPorQuantidade() {

    for (AtributosSelecionados c:campos){
       System.out.println("------------------------");
       System.out.println("Nome:"+ c.getNome());
       System.out.println("Marcado:" + c.getCampos());
       System.out.println("------------------------");
    }

    fireTableDataChanged();
}

}
[/code]

campoTableModel = new CamposTableModel(listaCamposSelecionado); tableCampos.setModel(campoTableModel);

chamando assim monta a jtable mas não mostra os nomes dos campos;
acho que falta algo, só não sei onde

Posta o método inteiro do trecho onde vc cria o JTable e associa ao form.

Seu model está certo. Está só ineficiente por vc disparar o datachanged sempre, mas esse não é o problema.

[quote=ViniGodoy]Posta o método inteiro do trecho onde vc cria o JTable e associa ao form.

Seu model está certo. Está só ineficiente por vc disparar o datachanged sempre, mas esse não é o problema.[/quote]

Eu pedi o método inteiro.

ArrayList&lt;CamposRetornados&gt; listaCamposRetornados = new ArrayList&lt;listaCamposRetornados&gt;();

private void initComponents() {
comboCampos = new javax.swing.JComboBox();
spCampos = new javax.swing.JScrollPane();
tableCampos = new javax.swing.JTable();


int qtdCampos = listaCamposRetornados.size();
String[] listaCampos = new String[qtdCampos];

comboCampos.setmodel(new javax.swing.DefaultComboBoxModel(listaCampos));

spCampos.setViewportView(tableCampos);

deu certo, estava invertido o código abaixo:

 @Override  
    public String getColumnName(int column) {  
     
        if (column == COL_N) {  
            return "-";  
        } else if (column == COL_C){  
           return "Nomes";  
        }  
  
        return "";  
    }  

De qualquer forma, isso só deveria estar imprimindo os nomes de forma invertida.

Eu acharia melhor inverter o valor dos índices no topo, e não esse if, do jeito que você fez. Senão o resto do seu model vai ficar inconsistente.

[quote=ViniGodoy]De qualquer forma, isso só deveria estar imprimindo os nomes de forma invertida.

Eu acharia melhor inverter o valor dos índices no topo, e não esse if, do jeito que você fez. Senão o resto do seu model vai ficar inconsistente.[/quote]

colocar

private final int COL_N = 0; private final int COL_C = 1;
?