Boa tarde caro colegas será q alguem pode me da uma força na implementação de uma TableModel para a tela de ajuste de estoque ja estou jogados os dados na jtable e fazendo os calculos, só q gostaria de modificar algumas coisa, tipo ao lista o itens na jtable a coluna diferença e total esta trazendo os valores só queria q ele esse valores aparecia apos a digitação da coluna ajuste, e apos precionar o enter o foco ir para a proxima linha de preferencia na mesma coluna. abaixo ou deixar o codigo de table model e o link da imagem da minha tela.
http://img716.imageshack.us/img716/7388/ajustedeestoque.gif
[code]
public class TableModelAjusteEstoque extends AbstractTableModel {
private static final DecimalFormat dF = new DecimalFormat("#,##0.00");
private List<Produto> linhas;
Produto prod;
private String[] colunas = new String[]{
"Código", "Descrição", "Custo Médio", "Quantidade", "Ajuste", "Diferença", "Total"};
public TableModelAjusteEstoque() {
linhas = new ArrayList<>();
}
public TableModelAjusteEstoque(List<Produto> listaDeProdutos) {
linhas = new ArrayList<>(listaDeProdutos);
}
@Override
public int getColumnCount() {
return colunas.length;
}
@Override
public int getRowCount() {
return linhas.size();
}
@Override
public String getColumnName(int columnIndex) {
return colunas[columnIndex];
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
case 0:
return int.class;
case 1:
return String.class;
case 2:
return double.class;
case 3:
return double.class;
case 4:
return String.class;
case 5:
return double.class;
case 6:
return double.class;
default:
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
prod = linhas.get(rowIndex);
switch (columnIndex) {
case 0:
return prod.getId();
case 1:
return prod.getNome();
case 2:
return dF.format(prod.getVlr_cmv());
case 3:
return dF.format(prod.getQuantidade());
case 4:
return prod.getEst_atual();
case 5:
try {
return dF.format(prod.getEst_atual()-Ulti.formatarValor(prod.getQtde()) );
} catch (ParseException ex) {
Logger.getLogger(TableModelAjusteEstoque.class.getName()).log(Level.SEVERE, null, ex);
}
case 6:
try {
return dF.format(( prod.getEst_atual()-Ulti.formatarValor(prod.getQtde())) * prod.getVlr_cmv());
} catch (ParseException ex) {
Logger.getLogger(TableModelAjusteEstoque.class.getName()).log(Level.SEVERE, null, ex);
}
default:
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
Produto prod = linhas.get(rowIndex);
System.out.println("columnIndex: " + columnIndex);
switch (columnIndex) {
case 0:
if (aValue.getClass() == int.class) {
prod.setId(Integer.parseInt(aValue.toString()));
}
break;
case 1:
if (aValue.getClass() == String.class) {
prod.setNome(aValue.toString());
}
break;
case 2:
if (aValue.getClass() == Double.class) {
prod.setVlr_custo(Double.parseDouble(aValue.toString()));
}
break;
case 4:
try {
prod.setEst_atual(Integer.parseInt(aValue.toString()));
} catch (Exception e) {
}
break;
case 3:
if (aValue.getClass() == Double.class) {
prod.setQuant_inv(Double.parseDouble(aValue.toString()));
}
break;
default:
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 4:
return true;
default:
return false;
}
}
public Produto getProduto(int indiceLinha) {
return linhas.get(indiceLinha);
}
public void addProduto(Produto prod) {
linhas.add(prod);
int ultimoIndice = getRowCount() - 1;
}
public void removeProduto(int indiceLinha) {
linhas.remove(indiceLinha);
fireTableRowsDeleted(indiceLinha, indiceLinha);
}
public void addListaDeProduto(List<Produto> prod) {
int tamanhoAntigo = getRowCount();
linhas.addAll(prod);
fireTableRowsInserted(tamanhoAntigo, getRowCount() - 1);
}
public void limpar() {
linhas.clear();
fireTableDataChanged();
}
public boolean isEmpty() {
return linhas.isEmpty();
}
public double getTotalGeral() {
double total = 0;
for (Produto p : linhas) {
total += p.getVlr_cmv() * p.getEst_atual();
}
return total;
}
public List<Produto> getLinhas() {
return linhas;
}[/code]