[RESOLVIDO] Como mostrar resultado de BigDecimal num JTextField

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.

java.text.DecimalFormat aceita também BigDecimal.

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

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.


[quote=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[/quote]

[quote=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.


[quote=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[/quote][/quote]

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

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.

[quote=Santhell][quote=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.


[quote=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[/quote][/quote]

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

para pegar o evento do enter, seria com o keyListner

[code]
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
			
		}});[/code]