Bom dia, estou tentando inserir em uma coluna de uma JTable, JCheckbox, consegui tal fato mas ao clicar ele não altera o estado marcando o componente.
Criei uma arquivo java que contem 2 classe uma estende de AbstractTableModel e ai eu pego os métodos da classe abstrata e os altero.
Até ai deu certo, mas quando eu clico, ele não marca ou desmarca a caixa de dialogo.
Me indicaram implementar o listener TableModelListenermas n deu mt certo pelo exemplo que achei no google.
Então queria saber, como fazer?
Obrigado
package br.com.javamail.visao;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
import br.com.javamail.processamento.ProcessaDadosTabela;
public class Tabela {
private JTable tabela;
public Tabela() {
this.tabela = new JTable(new modeloTabela());
this.tabela.getModel().addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
if (e.getColumn() == 0) {
TableModel tableModel = tabela.getModel();
Boolean value = (Boolean) tableModel.getValueAt(e.getFirstRow(), 0);
System.out.println(value);
}
}
});
this.tabela.setFillsViewportHeight(true);
}
public JTable getTabela() {
return tabela;
}
}
class modeloTabela extends AbstractTableModel {
private Object[][] dados;
private String[] nomeColunas;
public modeloTabela() {
this.dados = new ProcessaDadosTabela().getArranjoTabela();
this.nomeColunas = new ProcessaDadosTabela().getNomeDasColunas();
}
@Override
public int getRowCount() {
return dados.length;
}
@Override
public int getColumnCount() {
return nomeColunas.length;
}
@Override
public Object getValueAt(int indiceLinha, int indiceColuna) {
return dados[indiceLinha][indiceColuna];
}
@Override
public Class<?> getColumnClass(int indiceColuna) {
return getValueAt(0, indiceColuna).getClass();
}
@Override
public boolean isCellEditable(int indiceLinha, int indiceColuna) {
switch (indiceColuna) {
case 0:
return true;
default:
return false;
}
}
}
