Ola galerinha estou com um problema e preciso de uma ajuda tenho um valor do tipo BigDecimal no Seguinte formato em um textfield 123.123,32 e preciso
pegar esse valor e formatar para esse formato 123,123.32 isso vai acontecer Quando uma combo box for alterada de R$ para U$
Tentei de um geito que Tecnicamente deveria ter funcionado um jeito simples e claro vou colocar aki se algm soubver o pq nao funciona agradeço
txValorTitulo.setText(BigDecimalUtil.getBigDecimal(txValorTitulo.getText()).toString());
E esse é o metodo getBigDecimalFormat
public static BigDecimal getBigDecimalFormat(Object object) {
// declarando objeto que vai ser retornado
BigDecimal value = null;
// verificando se o argumento eh diferente de nulo
if (object != null) { // se for diferente de nulo
// verificando se o argumento eh do tipo long
if (object instanceof BigDecimal) { // se sim
// nesse caso so faz a conversao
value = (BigDecimal) object;
// verificando se o argumento eh do tipo Number
} else if (object instanceof Number) { // se sim
// criando o objeto long atraves do number
value = new BigDecimal(((Number) object).doubleValue());
// verificando se o argumento eh do tipo String
} else if (object instanceof String) { // se for string
value = new BigDecimal(((String) object).replaceAll("\\.", "*").replace(',', '.').replaceAll("\\*",","));
} else { // senao tipo invalido para efetuar convercao
// lancao excecao
throw new IllegalArgumentException(
"Não é possivel converter o objeto do tipo ["
+ object.getClass().getName()
+ "] para o tipo Double.");
}
}
return value;
}
Bom Esse foi o primeiro jeito que tentei um simples Replace mas nao entendi pq nao funcionou …
E esse é o Segundo geito
teste = BigDecimalUtil.getBigDecimal(txValorTitulo.getText().toString());
txValorTitulo.setDocument(new PlainDocument());//limpa o TextField para entrar o novo valor
txValorTitulo.setText(nfUS.format(teste).substring(1));
Segue o metodo Get Big Decimal
public static BigDecimal getBigDecimal(Object object) {
// declarando objeto que vai ser retornado
BigDecimal value = null;
// verificando se o argumento eh diferente de nulo
if (object != null) { // se for diferente de nulo
// verificando se o argumento eh do tipo long
if (object instanceof BigDecimal) { // se sim
// nesse caso so faz a conversao
value = (BigDecimal) object;
// verificando se o argumento eh do tipo Number
} else if (object instanceof Number) { // se sim
// criando o objeto long atraves do number
value = new BigDecimal(((Number) object).doubleValue());
// verificando se o argumento eh do tipo String
} else if (object instanceof String) { // se for string
// criando objeto long com base em uma String
value = new BigDecimal(((String) object).replaceAll("\\.", "").replace(',', '.'));
} else { // senao tipo invalido para efetuar convercao
// lancao excecao
throw new IllegalArgumentException(
"Não é possivel converter o objeto do tipo ["
+ object.getClass().getName()
+ "] para o tipo Double.");
}
}
return value;
}
Ambos dao Number Format Excepition porem … o Segundo Exemplo Funciona perfeitamente faz a troca de pontos por virgulas e talz formata certinho soh
que mesmo estando tudo certo lança a exception …algm sugere um geito
mais facil de fazer??
abraços