Criar Converter [RESOLVIDO]

4 respostas
J

Bom dia, galera é o seguinte tenho um JTableBinding que traz valores do banco de dados no formato bigDecimal 1000.53 preciso mostrar estes dados na tabela em formato moeda 1000,53 sei que para isso é necessário criar-se um converter porem não consigo.

Obrigado!

4 Respostas

G

Cara, converte o valor do BigDecimal pra String e trabalha com replace na String.
Por exemplo, mudar o ponto por vírgula: replace(’.’, ‘,’), e por aí vai.

J

pois eh kra mais no JTableBindig não é tão simples assim. Olha so.

/**Metodo responsável por preencher as colunas da Tabela com as devidas informações */ public static void preencheColuna(JTableBinding bindgtabela, String campo, String titulo, Object objeto) { JTableBinding.ColumnBinding colunaAdd = bindgtabela.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${" + campo + "}")); colunaAdd.setColumnName(titulo); try { colunaAdd.setColumnClass(Class.forName(objeto.getClass().getName())); } catch (Exception exception) { JOptionPane.showMessageDialog(null, exception.getMessage(), "Erro!", JOptionPane.ERROR_MESSAGE); } }

public TableModel CriaTabela(List dados) throws Exception { JTable tblTemporaria = new JTable(); try { JTableBinding bindgtabela = SwingBindings.createJTableBinding(AutoBinding.UpdateStrategy.READ_WRITE, dados, tblTemporaria); FrmConsulta.preencheColuna(bindgtabela, "subgCodigo.gruCodigo.gruDescricao", "Grupo", new String()); FrmConsulta.preencheColuna(bindgtabela, "subgCodigo.subgDescricao", "Subgrupo", new String()); FrmConsulta.preencheColuna(bindgtabela, "prodCodigo", "Código", new Integer(0)); FrmConsulta.preencheColuna(bindgtabela, "prodDescricao", "Produto", new String()); FrmConsulta.preencheColuna(bindgtabela, "prodAplicacao", "Aplicação", new String()); FrmConsulta.preencheColuna(bindgtabela, "prodPrecoCusto", "Preço de Custo", new BigDecimal(0)); FrmConsulta.preencheColuna(bindgtabela, "prodPrecoVenda", "Preço de Venda", new BigDecimal(0)); FrmConsulta.preencheColuna(bindgtabela, "prodEstoqueMinimo", "Estoque Mínimo", new BigDecimal(0)); FrmConsulta.preencheColuna(bindgtabela, "prodEstoqueMaximo", "Estoque Máximo", new BigDecimal(0)); FrmConsulta.preencheColuna(bindgtabela, "prodControlaEstoque", "Contrala Estque?", new String()); bindgtabela.bind(); bindgtabela.setEditable(false); return tblTemporaria.getModel(); } catch (Exception exception) { throw new Exception("" + exception.getMessage()); } }
Usando esta metodologia so passo minha lista de beans e estes 2 metodos fazem o trabalho o problema é converter um tipo de dados para outro com outra formatação por isso preciso de um converter mais não encontrei nada na net que pudesse me ajudar

A

Converte para String e usa e pega apenas 2 digitos após a virgula, depois se preferir tu pode criar um Double

Double d = new Double( String );

Mas use um SimpleDecimalFormat antes.

J
Galera consegui fazer o que eu queria segue abaixo o codigo que cria o converter
class ConvertBigDecimalToCurrencyValue extends Converter{
    
        @Override
        public Object convertForward(Object value) {
            if(value instanceof BigDecimal){
                return Utilitarios.Convert((BigDecimal) value);
            }else{
                return value;
            }
        }

        @Override
        public Object convertReverse(Object value) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
    }
metodo convertReverse não foi implementado pq não preciso dele, dai na chamada para cada coluna da minha tabela que eu tenho valores que são instancia de um BigDecimal eu faço assim oh:
public TableModel CriaTabela(List dados) throws Exception {
        JTable tblTemporaria = new JTable();
        try {
            JTableBinding bindgtabela = SwingBindings.createJTableBinding(AutoBinding.UpdateStrategy.READ_WRITE, dados, tblTemporaria);
            FrmConsulta.preencheColuna(bindgtabela, "subgCodigo.gruCodigo.gruDescricao", "Grupo", new String());
            FrmConsulta.preencheColuna(bindgtabela, "subgCodigo.subgDescricao", "Subgrupo", new String());
            FrmConsulta.preencheColuna(bindgtabela, "prodCodigo", "Código", new Integer(0));
            FrmConsulta.preencheColuna(bindgtabela, "prodDescricao", "Produto", new String());
            FrmConsulta.preencheColuna(bindgtabela, "prodAplicacao", "Aplicação", new String());
            FrmConsulta.preencheColuna(bindgtabela, "prodPrecoCusto", "Preço de Custo", new BigDecimal(0));
            FrmConsulta.preencheColuna(bindgtabela, "prodPrecoVenda", "Preço de Venda", new BigDecimal(0));
            FrmConsulta.preencheColuna(bindgtabela, "prodEstoqueMinimo", "Estoque Mínimo", new BigDecimal(0));
            FrmConsulta.preencheColuna(bindgtabela, "prodEstoqueMaximo", "Estoque Máximo", new BigDecimal(0));
            FrmConsulta.preencheColuna(bindgtabela, "prodControlaEstoque", "Contrala Estque?", new String());
            //o pulo do gato
            Converter x = new ConvertBigDecimalToCurrencyValue();
            bindgtabela.getColumnBinding(5).setConverter(x);
            bindgtabela.getColumnBinding(7).setConverter(x);
            bindgtabela.getColumnBinding(8).setConverter(x);
            //fim do pulo do gato. hauhauha
            bindgtabela.bind();
            bindgtabela.setEditable(false);
            return tblTemporaria.getModel();
        } catch (Exception exception) {
            throw new Exception("" + exception.getMessage());
        }
    }
Criado 19 de novembro de 2009
Ultima resposta 19 de nov. de 2009
Respostas 4
Participantes 3