Evento ao digitar em um jFormattedText

Bom dia, queria saber de vocês, o que usar pra chamar um evento quando digito um valor em um jFormattedText.

Ex: Tenho 3 jFormattedText.

  • Subtotal
  • Desconto
  • Total

Quero adicionar um evento no Desconto, pra quando eu colocar qualquer valor no jFormattedText do desconto, ele ja calcula e ja joga o valor no total. Ou seja, de acordo com que eu mude o valor do desconto, ele ja vai alterando o valor total.

Cara, usa o evento de FocusLost, assim, quando você sair do campo “Desconto” o cálculo vai ser feito “automaticamente”

Obrigado. Ja vai me ajudar. Não tem um que eu permaneça no campo, e de acordo com o que eu vou colocando no desconto, vai alterando “automaticamente” o total?

Tem, o KeyReleased, a cada “tecla solta” o resultado vai atualizar

Eu tentei usar aqui, não consegui não.

Não ta conseguindo pegar o valor da string que estou passando...

 String quantidade = String.valueOf(ftfQuantidade.getValue());
 String desconto = String.valueOf(ftfDesconto.getValue());
 String sub_total = String.valueOf(produtos.get(cbProdutos.getSelectedIndex()).getValor_venda() * Integer.parseInt(quantidade));
         
             Total = Double.parseDouble(sub_total) - (Double.parseDouble(sub_total) * Double.parseDouble(desconto)/100 );
             ftfTotal.setValue(Total);

o erro que gera é esse:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "null"
    	at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
    	at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
    	at java.lang.Double.parseDouble(Double.java:538)
    	at br.com.sisVendas.RealizarVendas.ftfDescontoKeyReleased(RealizarVendas.java:618)

Essa linha 618 é essa linha:

Total = Double.parseDouble(sub_total) - (Double.parseDouble(sub_total) * Double.parseDouble(desconto)/100 );

O que pode ser !?

Tá dando erro por não conseguir calcular, o valor ta “nulo” então não fez o cálculo, o certo seria apertar enter depois de colocar o valor, tenta isso. Digita todo o valor do desconto e depois coloca aperta Enter pra ver se funciona

if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
String quantidade = String.valueOf(ftfQuantidade.getValue());
 String desconto = String.valueOf(ftfDesconto.getValue());
 String sub_total = String.valueOf(produtos.get(cbProdutos.getSelectedIndex()).getValor_venda() * Integer.parseInt(quantidade));
         
             Total = Double.parseDouble(sub_total) - (Double.parseDouble(sub_total) * Double.parseDouble(desconto)/100 );
             ftfTotal.setValue(Total);
}

Até funcionou. Deu certo. Mas a cada pressionada no enter, em vez dele zerar o total e fazer uma nova conta, ele soma em cima do total que ja estava. kkkk

Faz assim, clica com o botão direito em cima do seu formatted, e procura a opção "focusLostBehavior", muda pra persist

Não deu em nada. kkkk… O problema é que a cada vez que eu clico no enter, ele soma o subtotal de novo com o total e da o total acrescentado.

Coloca um setText("") no campo de desconto quando vc apertar enter pra ver se ajuda, aí teria que colocar o valor novamente