implementação de ajuste de estoque (TableModel)

0 respostas
adsadilson

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.

[url]http://img716.imageshack.us/img716/7388/ajustedeestoque.gif[/url]

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;
    }
Criado 20 de abril de 2013
Respostas 0
Participantes 1