boa tarde galera,
andei lendo vários tópicos sobre JTable aqui no fórum, e a galera sempre insites em usar a AbstractTableModel…
bom peguei o caminho da roça junto com alguns exemplo que vi por aqui e o vinni me mostro outro por MP e CRIEI a minha baseada nos conceitos que entendi!
obs: me informem se algum conceito estiver errado…
segue minhas classe e a função que insere na JTable
Classe do “List”
public class SessaoPresencaIrmaosJTable {
private int irmCodigo = 0;
private String irmNome = "";
private boolean presenca = false;
private String obs = "";
public SessaoPresencaIrmaosJTable(int irmCodigo, String irmNome, int presenca, String obs) {
this.irmCodigo = irmCodigo;
this.irmNome = irmNome;
if (presenca != 0) {
this.presenca = true;
} else {
this.presenca = false;
}
this.obs = obs;
}
public int getIrmCodigo() {
return irmCodigo;
}
public void setIrmCodigo(int irmCodigo) {
this.irmCodigo = irmCodigo;
}
public String getIrmNome() {
return irmNome;
}
public void setIrmNome(String irmNome) {
this.irmNome = irmNome;
}
public String getObs() {
return obs;
}
public void setObs(String obs) {
this.obs = obs;
}
public boolean isPresenca() {
return presenca;
}
public void setPresenca(boolean presenca) {
this.presenca = presenca;
}
}
Modelo da JTable
public class SessaoPresencaTableModel extends AbstractTableModel {
private static final int COL_IRMCODIGO = 0;
private static final int COL_IRMNOME = 1;
private static final int COL_PRESENCA = 2;
private static final int COL_OBS = 3;
private List<SessaoPresencaIrmaosJTable> lista;
public SessaoPresencaTableModel(List<SessaoPresencaIrmaosJTable> lista) {
this.lista = lista;
}
public int getRowCount() {
return lista.size();
}
public int getColumnCount() {
return 4;
}
@Override
public String getColumnName(int column) {
if (column == COL_IRMCODIGO) {
return "Código";
} else if (column == COL_IRMNOME) {
return "Nome";
} else if (column == COL_PRESENCA) {
return "Presença";
} else if (column == COL_OBS) {
return "Observação";
} else {
return "";
}
}
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == COL_IRMCODIGO) {
return Integer.class;
} else if (columnIndex == COL_IRMNOME) {
return String.class;
} else if (columnIndex == COL_PRESENCA) {
return Boolean.class;
} else if (columnIndex == COL_OBS) {
return String.class;
} else {
return String.class;
}
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
super.setValueAt(aValue, rowIndex, columnIndex);
}
public Object getValueAt(int rowIndex, int columnIndex) {
SessaoPresencaIrmaosJTable sessao = lista.get(rowIndex);
if (columnIndex == COL_IRMCODIGO) {
return sessao.getIrmCodigo();
} else if (columnIndex == COL_IRMNOME) {
return sessao.getIrmNome();
} else if (columnIndex == COL_PRESENCA) {
return sessao.isPresenca();
} else if (columnIndex == COL_OBS) {
return sessao.getObs();
} else {
return "";
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
if (columnIndex == COL_PRESENCA) {
return true;
} else {
return false;
}
}
public SessaoPresencaIrmaosJTable get(int row) {
return lista.get(row);
}
Joga no JTable
private void iniciaLista() {
try {
if (!stats) {
String sql = "SELECT ir.irm_codigo, ir.irm_nome ";
sql += "FROM Irmaos AS ir ORDER BY ir.irm_nome";
ResultSet rsAux = Operacoes.consulta(sql, con);
if (rsAux != null) {
rsAux.beforeFirst();
while (rsAux.next()) {
linha = new SessaoPresencaIrmaosJTable(rsAux.getInt("irm_codigo"), rsAux.getString("irm_nome"), 0, "");
lista.add(linha);
}
}
} else {
String sql = "SELECT ir.irm_codigo, ir.irm_nome, sp.spr_presenca, sp.spr_obs ";
sql += "FROM Irmaos AS ir INNER JOIN ";
sql += "PresencaSessoes AS sp ON ir.irm_codigo = sp.irm_codigo ";
sql += "WHERE (sp.ses_codigo = " + sesAtual + ")";
ResultSet rsAux = Operacoes.consulta(sql, con);
if (rsAux != null) {
rsAux.beforeFirst();
while (rsAux.next()) {
linha = new SessaoPresencaIrmaosJTable(rsAux.getInt("irm_codigo"), rsAux.getString("irm_nome"), rsAux.getInt("spr_presenca"), rsAux.getString("spr_obs"));
lista.add(linha);
}
}
}
modelo = new SessaoPresencaTableModel(lista);
tabela.setModel(modelo);
} catch (SQLException ex) {
Logger.getLogger(sisSessaoPresencaIrmaos.class.getName()).log(Level.SEVERE, null, ex);
}
}
agora como nada são flores na vida… segue o problema
rsrsrsrsrs
a a minha coluna PRESENÇA ela tem que estar como editável, assim pode marca um sim/não (lembrando que essa coluna é Boolean.class então é um checkbox)
e nao está deixando editar :S sabem me dizer o pq?
e tbm…
eu queria saber se é nessa classe que eu altero o tamanho de cada coluna, fonte da tabela…
cor de linhas e tal!
ou se é em outra classe… se for em outra… me passa o que procurar sobre isso!
creio eu que nao seja uma coisa mto complicada até pq a minha JTable é simples, mais por questões de sempre utilizar o DefaultModel da tabela e nunca ter usado o AbstractTableModel (que acabei percebendo nao ser um bixo de 7 cabeças) fico meio complicado e sem saber o que fazer!
aguardo a ajuda de todos!
[]´s