Olá galera!
Tenho uma JTable com uma coluna com checkbox, mas o checkboxs não aparecem! Em seu lugar aparece true ou false.
Quando eu clico na celula aparece o checkbox e some novamente, mudando apenas true ou false. Como se ele estivesse atrás da cor de fundo da célula
Já percebi que se eu NÃO usar cellRenderer aparece normalmente.
O que pode ser?
TableModel:
public class BemTransferenciaTableModel extends AbstractTableModel{
private final int COL_CHECK = 0;
private final int COL_PATRIMONIO = 1;
private final int COL_DESCRICAO = 2;
private final int COL_VALOR = 3;
private final int COL_OBS = 4;
private List<BemUnidade> listaBens;
public BemTransferenciaTableModel() {
listaBens = new ArrayList<BemUnidade>();
}
public BemTransferenciaTableModel(List<BemUnidade> lista) {
this();
listaBens.addAll(lista);
}
public int getRowCount() {
return listaBens.size();
}
public int getColumnCount() {
return 4;
}
@Override
public String getColumnName(int column) {
if (column == COL_CHECK){
return "#";
}
if (column == COL_PATRIMONIO) {
return "Patrimônio";
} else if (column == COL_DESCRICAO) {
return "Descrição";
}else if (column == COL_VALOR){
return "Valor";
}else if (column == COL_OBS){
return "Observação";
}
return "";
}
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == COL_CHECK){
return Boolean.class;
}
if (columnIndex == COL_PATRIMONIO) {
return String.class;
} else if (columnIndex == COL_DESCRICAO) {
return String.class;
}else if (columnIndex == COL_VALOR){
return Double.class;
}else if (columnIndex == COL_OBS){
return String.class;
}
return super.getColumnClass(columnIndex);
}
public Object getValueAt(int rowIndex, int columnIndex) {
BemUnidade bemUnid = listaBens.get(rowIndex);
if (columnIndex == COL_CHECK){
return bemUnid.getBem().getSelecionado();
}
if (columnIndex == COL_PATRIMONIO) {
return bemUnid.getBem().getPatrimonio();
} else if (columnIndex == COL_DESCRICAO) {
return bemUnid.getBem().getDescricao();
}else if (columnIndex == COL_VALOR){
return bemUnid.getBem().getValor();
}else if (columnIndex == COL_OBS){
return bemUnid.getObservacao();
}
return "";
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return (columnIndex == COL_CHECK);
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
BemUnidade bemUnid = listaBens.get(rowIndex);
if (columnIndex == COL_CHECK){
bemUnid.getBem().setSelecionado((Boolean) aValue);
}else if (columnIndex == COL_PATRIMONIO) {
bemUnid.getBem().setPatrimonio(aValue.toString());
} else if (columnIndex == COL_DESCRICAO) {
bemUnid.getBem().setDescricao(aValue.toString());
}else if (columnIndex == COL_VALOR){
bemUnid.getBem().setValor((Double) aValue);
}else if (columnIndex == COL_OBS){
bemUnid.setObservacao(aValue.toString());
}
fireTableDataChanged();
}
CellRenderer:
[code]public class BemTransferenciaCellRenderer extends DefaultTableCellRenderer{
public BemTransferenciaCellRenderer() {
super();
}
public Component getTableCellRendererComponent(javax.swing.JTable table,
Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JLabel label = (JLabel) super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
Color corFundoZebrado = new Color(240, 240, 240);
Color corFundoNormal = new Color(255, 255, 230);
label.setFont(new java.awt.Font("Tahoma", 0, 12));
if ((row % 2) == 0) {
label.setBackground(corFundoNormal);
} else {
label.setBackground(corFundoZebrado);
}
if (column == 0) {
label.setHorizontalAlignment(CENTER);
} else if (column == 1) {
label.setHorizontalAlignment(CENTER);
} else if (column == 2) {
label.setHorizontalAlignment(LEFT);
} else if (column == 3) {
label.setHorizontalAlignment(CENTER);
}else if (column == 4){
label.setHorizontalAlignment(LEFT);
}
return label;
}
}[/code]