Olá Amigos.
Preciso de uma ajuda com o modelo abaixo, criei ele seguindo um tutorial mas não estou conseguindo implementar a logica para que o checkbox da primeira coluna fique editavel.
Preciso que esse checkbox seja marcado ao clicar e desmarcado ao clicar novamente possibilitando a seleção de linhas alternadas na minha tabela.
Alguem sabe como implementar isso em AbstractTableModel?
package aaamain;
import java.util.ArrayList;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.table.AbstractTableModel;
public class ModeloTabela extends AbstractTableModel {
private static final long serialVersionUID = 1L;
List<Pessoas> pessoas = new ArrayList<Pessoas>();
String[] colunas = new String[] { "boleano", "nome", "idade", "icone" };
@Override
public String getColumnName(int column) {
return colunas[column];
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
case 0:
return Boolean.class;
case 1:
return String.class;
case 2:
return Integer.class;
case 3:
return ImageIcon.class;
}
return null;
}
public int getRowCount() {
return pessoas.size();
}
public int getColumnCount() {
return colunas.length;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0: // CheckBox
return true;
case 1: // CheckBox
return false;
default:
return false;
}
}
public Object setValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return pessoas.get(rowIndex).isAtivo() ? false : true;
case 1:
return pessoas.get(rowIndex).getNome();
case 2:
return pessoas.get(rowIndex).getIcone();
case 3:
return pessoas.get(rowIndex).getIcone();
}
fireTableCellUpdated(rowIndex, columnIndex);
return null;
}
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return pessoas.get(rowIndex).isAtivo();
case 1:
return pessoas.get(rowIndex).getNome();
case 2:
return pessoas.get(rowIndex).getIcone();
case 3:
return pessoas.get(rowIndex).getIcone();
}
fireTableCellUpdated(rowIndex, columnIndex);
return null;
}
public void addRow(int rowIndex, int columnIndex) {
this.addRow(rowIndex, columnIndex);
this.fireTableDataChanged();
}
public void addRow(Pessoas p) {
this.pessoas.add(p);
this.fireTableDataChanged();
}
}