[RESOLVIDO] Como mostrar resultado de BigDecimal num JTextField

6 respostas
jMarcel

Ola colegas.

Minha duvida é simples: tenho 3 textfield para entrada de dados. Depois de converte-los para BigDecimal, como mostro a soma desses 3 valores num quarto textfield (se possível, formatado com ‘.’ para milhares e ‘,’ para decimais).

Agradeço pela ajuda.

jMarcel.

6 Respostas

E

java.text.DecimalFormat aceita também BigDecimal.

S

DecimalFormat df = new DecimalFormat("0.00") //<- Adicione aqui a expressão pro DF jTextField1.setText(df.format(A variavel big decimal));

Pronto acho que é isso

jMarcel

Ok. Entendo que é possível a conversão para DecimalFormat. Mas, serei mais específico:

Tenho 3 textfields para o usuário inserir valores.

Ele digita o valor no TF1 e tecal ENTER;

Ele digita o valor no TF2 e tecal ENTER;

Ele digita o valor no TF3 e tecal ENTER;

No TF4, ao ganhar o focus (evento FocusGained), quero que apareça o resultado da soma TF1+TF2+TF3.

private void solicitadoTextFieldFocusGained(java.awt.event.FocusEvent evt) {

String xTF = (tf1.getText());
	String yTF = (tf2.getText());
	String zTF = (tf3.getText());

	BigDecimal x = new BigDecimal(xTF);
	BigDecimal y = new BigDecimal(yTF);
	BigDecimal z = new BigDecimal(zTF);
	BigDecimal soma = (x + y + z);
			
	tf4.setText("R$ " + soma.toString());
}

Obrigado pela atenção.


Santhell:
DecimalFormat df = new DecimalFormat("0.00") //<- Adicione aqui a expressão pro DF jTextField1.setText(df.format(A variavel big decimal));

Pronto acho que é isso

S

jMarcel:
Ok. Entendo que é possível a conversão para DecimalFormat. Mas, serei mais específico:

Tenho 3 textfields para o usuário inserir valores.

Ele digita o valor no TF1 e tecal ENTER;

Ele digita o valor no TF2 e tecal ENTER;

Ele digita o valor no TF3 e tecal ENTER;

No TF4, ao ganhar o focus (evento FocusGained), quero que apareça o resultado da soma TF1+TF2+TF3.

private void solicitadoTextFieldFocusGained(java.awt.event.FocusEvent evt) {

String xTF = (tf1.getText());
	String yTF = (tf2.getText());
	String zTF = (tf3.getText());

	BigDecimal x = new BigDecimal(xTF);
	BigDecimal y = new BigDecimal(yTF);
	BigDecimal z = new BigDecimal(zTF);
	BigDecimal soma = (x + y + z);
			
	tf4.setText("R$ " + soma.toString());
}

Obrigado pela atenção.


Santhell:
DecimalFormat df = new DecimalFormat("0.00") //<- Adicione aqui a expressão pro DF jTextField1.setText(df.format(A variavel big decimal));

Pronto acho que é isso

Tente criar um ActionListener para cada TextField, para quando o usuário apertar enter o programa pegar o valor do TextField
Abraços

jMarcel

Santhell (ou alguém mais),
você pode exemplificar com código, só pra entender melhor.

Antes, 1 exemplo: digito 1 valor no TF1, teclo ENTER; o valor é passado para um método que o converte p/ BigDecimal. Assim, o valor aparece formatado no TF1 e, finalmente, o foco vai para o TF2 (requestFocus). E assim sucessivamente até o TF3.

Quando teclo ENTER no TF3, o foco vai p/ TF4 (que tem um método somar() os 3 valores em 1 evento FocusGained, ou seja, assim que o cursor ir para o TF4, ele soma() e apresenta o resultado no TF4).

Está funcionando desde que a soma < mil e/ou em qq 1 dos campos o valor tb seja <mil, pq ele formata mil, por ex, como ‘1,000.00’. Enfim, a vírgula lança uma exceção NumberFormatException, que eu já tratei, mas mesmo assim ainda não soma.

Obrigado pela atenção.

Santhell:
jMarcel:
Ok. Entendo que é possível a conversão para DecimalFormat. Mas, serei mais específico:

Tenho 3 textfields para o usuário inserir valores.

Ele digita o valor no TF1 e tecal ENTER;

Ele digita o valor no TF2 e tecal ENTER;

Ele digita o valor no TF3 e tecal ENTER;

No TF4, ao ganhar o focus (evento FocusGained), quero que apareça o resultado da soma TF1+TF2+TF3.

private void solicitadoTextFieldFocusGained(java.awt.event.FocusEvent evt) {

String xTF = (tf1.getText());
	String yTF = (tf2.getText());
	String zTF = (tf3.getText());

	BigDecimal x = new BigDecimal(xTF);
	BigDecimal y = new BigDecimal(yTF);
	BigDecimal z = new BigDecimal(zTF);
	BigDecimal soma = (x + y + z);
			
	tf4.setText("R$ " + soma.toString());
}

Obrigado pela atenção.


Santhell:
DecimalFormat df = new DecimalFormat("0.00") //<- Adicione aqui a expressão pro DF jTextField1.setText(df.format(A variavel big decimal));

Pronto acho que é isso

Tente criar um ActionListener para cada TextField, para quando o usuário apertar enter o programa pegar o valor do TextField
Abraços

Hellmanss
para pegar o evento do enter, seria com o keyListner
seuComponente.addKeyListener(new KeyListener(){

			public void keyPressed(KeyEvent e) {
				// TODO Auto-generated method stub
				
			}

			public void keyReleased(KeyEvent e) {
				// TODO Auto-generated method stub
				
			}

			public void keyTyped(KeyEvent e) {
				// TODO Auto-generated method stub
				
			}});
Criado 21 de setembro de 2009
Ultima resposta 24 de set. de 2009
Respostas 6
Participantes 4