Preencho um JTable com um TableModel personalizado criado por mim, este é o TableModel:
public class TableModelItens extends AbstractTableModel {
private List<ItemPedidoMOD> itens;
private String[] colunas = {"Cod.", "Nome", "Valor", "Qtd.", "Valor Total"};
private final int COD = 0;
private final int NOME = 1;
private final int VALOR = 2;
private final int QTD = 3;
private final int VALOR_TOTAL = 4;
public TableModelItens() {
itens = new ArrayList<>();
}
@Override
public int getRowCount() {
return itens.size();
}
@Override
public int getColumnCount() {
return colunas.length;
}
@Override
public String getColumnName(int column) {
return colunas[column];
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
ItemPedidoMOD i = itens.get(rowIndex);
switch (columnIndex) {
case COD:
return i.getProduto().getId();
case NOME:
return i.getProduto().getNome();
case VALOR:
return FormatarValores.formatarMonetario(i.getProduto().getValorUnit());
case QTD:
return FormatarValores.formatarDecimal(i.getQtd());
case VALOR_TOTAL:
return FormatarValores.formatarMonetario(i.getValorTotal());
default:
throw new RuntimeException("Coluna inexistente");
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
case COD:
return Integer.class;
case NOME:
return String.class;
case VALOR:
return String.class;
case QTD:
return String.class;
case VALOR_TOTAL:
return String.class;
default:
throw new RuntimeException("Coluna inexistente");
}
}
// MANIPULAÇÃO DE DADOS
public void addItem(ItemPedidoMOD i) {
itens.add(i);
atualizar();
}
public void addListItens(List<ItemPedidoMOD> itens) {
this.itens.addAll(itens);
atualizar();
}
public ItemPedidoMOD getItemByIndice(int indice) {
return itens.get(indice);
}
public void limpar() {
itens.clear();
atualizar();
}
public void alterarItem(ItemPedidoMOD i, int index) {
itens.set(index, i);
atualizar();
}
public void removerItem(int index) {
itens.remove(index);
atualizar();
}
private void atualizar() {
fireTableDataChanged();
}
}
A situação é a seguinte, minha classe ItemPedidoMOD tem um atributo chamado tipo. Existem 2 tipos - CC e CI.
caso for CC eu quero alinha a linha do JTable a esquerda, e caso for CI preciso alinha a linha a direita e pintar a letra de vermelho.
Tem como fazer isso?