tenho duas classes:
public class SocioTableModelTest extends JFrame {
private JTable tblSocios;
private SocioTableModel tableModel;
public SocioTableModelTest() {
super("SocioTableModelTest");
initialize();
}
private void itemstate() {
// TODO Auto-generated method stub
System.out.println(tableModel.getValueAt(0, 1));
}
private void actionperf() {
// TODO Auto-generated method stub
}
private void initialize() {
setSize(400, 150);
setDefaultCloseOperation(EXIT_ON_CLOSE);
//getContentPane().add(getTblSocios());
getContentPane().add(new JScrollPane(getTblSocios()));
}
private JTable getTblSocios() {
if (tblSocios == null) {
tblSocios = new JTable();
tblSocios.setModel(getTableModel());
}
return tblSocios;
}
private SocioTableModel getTableModel() {
if (tableModel == null) {
tableModel = new SocioTableModel(criaSocios());
}
return tableModel;
}
// cria uma lista com 5 sócios meramente ilustrativos
private List<Socio> criaSocios() {
List<Socio> socios = new ArrayList<Socio>();
for (int i = 1; i <= 5; i++) {
Socio socio = new Socio();
socio.setNome("Nome" + i);
socio.setEndereco("Endereço" + i);
socios.add(socio);
}
return socios;
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new SocioTableModelTest().setVisible(true);
}
});
}
}
public class SocioTableModel extends AbstractTableModel {
private List<Socio> linhas;
private String[] colunas = new String[] {"Ativo" , "Endereço", "Nome" };
private static final int NOME = 0;
private static final int ENDERECO = 1;
private static final int ATIVO = 2;
public List<Socio> getLinhas() {
return linhas;
}
public void setLinhas(List<Socio> linhas) {
this.linhas = linhas;
}
public String[] getColunas() {
return colunas;
}
public void setColunas(String[] colunas) {
this.colunas = colunas;
}
public static int getNOME() {
return NOME;
}
public static int getENDERECO() {
return ENDERECO;
}
public static int getATIVO() {
return ATIVO;
}
public SocioTableModel() {
linhas = new ArrayList<Socio>();
}
// Cria um SocioTableModel contendo a lista recebida por parâmetro
public SocioTableModel(List<Socio> listaDeSocios) {
linhas = new ArrayList<Socio>(listaDeSocios);
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return colunas.length;
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return linhas.size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
Socio socio = linhas.get(rowIndex);
switch (columnIndex) {
case ATIVO:
return socio.isAtivo();
case ENDERECO:
return socio.getEndereco();
case NOME:
return socio.getNome();
default:
// Não deve ocorrer, pois só existem 3 colunas
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
case ATIVO:
return Boolean.class;
case ENDERECO:
return String.class;
case NOME:
return String.class;
default:
// Não deve ocorrer, pois só existem 2 colunas
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
@Override
public String getColumnName(int columnIndex) {
return colunas[columnIndex];
};
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return columnIndex == ATIVO;
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
// Pega o sócio referente a linha especificada.
Socio socio = linhas.get(rowIndex);
switch (columnIndex) {
case ATIVO:
socio.setAtivo((Boolean) aValue);
break;
case ENDERECO:
socio.setEndereco((String) aValue);
break;
case NOME:
socio.setNome((String) aValue);
break;
default:
// Não deve ocorrer, pois só existem 3 colunas
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
fireTableCellUpdated(rowIndex, columnIndex); // Notifica a atualização da célula // Notifica a atualização da célula
}
// Retorna o sócio referente a linha especificada
public Socio getSocio(int indiceLinha) {
return linhas.get(indiceLinha);
}
// Adiciona o sócio especificado ao modelo
public void addSocio(Socio socio) {
// Adiciona o registro.
linhas.add(socio);
// Pega a quantidade de registros e subtrai 1 para
// achar o último índice. A subtração é necessária
// porque os índices começam em zero.
int ultimoIndice = getRowCount() - 1;
// Notifica a mudança.
fireTableRowsInserted(ultimoIndice, ultimoIndice);
}
// Remove o sócio da linha especificada.
public void removeSocio(int indiceLinha) {
// Remove o registro.
linhas.remove(indiceLinha);
// Notifica a mudança.
fireTableRowsDeleted(indiceLinha, indiceLinha);
}
// Adiciona uma lista de sócios no final da lista.
public void addListaDeSocios(List<Socio> socios) {
// Pega o tamanho antigo da tabela, que servirá
// como índice para o primeiro dos novos registros
int indice = getRowCount();
// Adiciona os registros.
linhas.addAll(socios);
// Notifica a mudança.
fireTableRowsInserted(indice, indice + socios.size());
}
// Remove todos os registros.
public void limpar() {
// Remove todos os elementos da lista de sócios.
linhas.clear();
// Notifica a mudança.
fireTableDataChanged();
}
}
Quero mostrar o valor do checkbox e nao consigo, o que falta fazer?