Dúvida - Atualizar JTextField em tempo de execução

6 respostas
GuilhermeSilva

Olá pessoal…

Estou com uma dúvida em atualizar um JTextField em tempo de execução.
Ex. Eu tenho 3 JTextField’s sendo:

txtValor1 = 1
txtValor2 = 1
txtResultadoSoma = txtValor1 + txtValor2 (que no caso é = 2)

O detalhe está no tempo de execução, ou seja, quando o usuário abre o frame para inserir os valores, no ato de ele informar o primeiro valor, automaticamente o txtResultadoSoma já vai atualizando, e assim sucessivamente.

Parece pra muitos tolice essa pergunta, mas como todos nós aqui no forum e em qualquer lugar nunca aprendemos sabendo tudo, vai ai minha duvida.
Gostaria de saber o que usar.
Desde já agradeço a colaboração de todos…
Abraço!!!

Guilherme

6 Respostas

drsmachado

A classe JTextField possui o método setText(String args) que permite que o conteúdo seja alterado dinâmicamente.
Por exemplo, se eu disparo um evento e quero que o JTextField em questão tenha seu valor definido como GUJ

jTextField1.setText("GUJ");

Assim você consegue realizar o que precisa.

GuilhermeSilva

Olá drsmachado, mais uma vez vc me ajudando… heheheh (valeuu!)
Então, eu sei sim sobre essa propriedade setText(“tal coisa”), mas deixa eu te explicar melhor com o código que eu fiz:

conta.setValor1(Double.parseDouble(txtValor1.getText()));
conta.setValor2(Double.parseDouble(txtValor2.getText()));

Double soma = Double.parseDouble(txtValor1.getText()) + Double.parseDouble(txtValor1.getText());
txtResultadoSoma.setText(String.valueOF(soma)); // eu preciso que esse txtResultadoSoma seja atualizado automaticamente em tempo de execução. Na medida que o usuário for digitando o valor1 e valor2, ele já vá atualizando com a soma e mostrando na tela
conta.setTotal(soma);

Desde já agradeço…

Guilherme

drsmachado

Para isso, você precisará implementar um método onCaretUpdate ou onKeyReleased, para reprocessar o cálculo a cada novo caractere digitado ou nova tecla pressionada e solta.
Dica, crie variáveis separadas para cada valor.
Evite coisas como

Double valor = Double.valueOf((Double.valueOf(JOptionPane.showInputDialog("Texto")) + Double.valueOf(jtext.getText()));

Isso fica muito complicado.

Double valor;
Double num1;
Double num2;
String sNum1;
String sNum2;
sNum1 = JOptionPane.showInputDialog("Texto");
num1 = Double.valueOf(sNum1);

Fica melhor.

GuilhermeSilva

Hum… entendi!
Vou dar uma estudada nesses metodos que vc disse, e assim que eu conseguir implementar isso eu posto aqui pra deixar pra outros que possuem essa mesma duvida minha.
Com relação a essa dica que vc passou, eu não havia pensado nisso.
Particularmente eu acho que fica até melhor dessa maneira. (mais legivel também)

Mas eu agradeço seu apoio drsmachado
Mais uma vez obrigado…

Guilherme

drsmachado

GuilhermeSilva:
Hum… entendi!
Vou dar uma estudada nesses metodos que vc disse, e assim que eu conseguir implementar isso eu posto aqui pra deixar pra outros que possuem essa mesma duvida minha.
Com relação a essa dica que vc passou, eu não havia pensado nisso.
Particularmente eu acho que fica até melhor dessa maneira. (mais legivel também)

Mas eu agradeço seu apoio drsmachado
Mais uma vez obrigado…

Guilherme

A idéia dos métodos onCaretUpdate e onKeyReleased é a mesma do actionListener. Você vai precisar implementar um CaretUpdateListener ou um KeyListener, que são interfaces, semelhantes à ActionListener.
Pense que não estamos mais contando os bits de memória para programas, dispomos de boas quantidades, por isso, declarar mais variáveis ou menos, não vai afetar muito a performance, neste escopo.

GuilhermeSilva

Olá drsmachado

Cara, não consegui nada especifico sobre isso, ou pelo menos não entendi muito bem o que proporam em outros tópicos.
Gostaria de saber por onde começar…
Se puder ajudar eu agradeço!

Abraço
Guilherme

Criado 24 de maio de 2012
Ultima resposta 25 de mai. de 2012
Respostas 6
Participantes 2