Bem, tenho um pequeno problema aqui, to trabalhando em um projeto da faculdade onde preciso exibir informacões relacionadas a alguns produtos, trata-se de um sistema basico de vendas… na hora de preencher os dados da venda, eu tenho 3 campos do tipo JTextField dispostos da seguinte forma:
O primeiro exibe o valor de venda do produto.
O segundo está em branco, aguardando o usuario digitar a quantidade de produtos que serão vendidos.
O terceiro aguarda o usuario digitar esse valor, e multiplicar pelo valor de venda, gerando então o valor total da venda…
O problema que tenho aqui é o seguinte, como faco para ele realizar essa multiplicacão a cada numero digitado ? preenchendo automaticamente o campo de Valor Total…
já tentei implementar o ActionListener mas ele só escuta eventos que terminam digitando a tecla Enter… preciso de um mais dinamico… outra duvida, é apropriado o uso do JTextField para entrada de dados numericos ??? porque ate agora to quebrando cabeca pra fazer funcionar… mas se o usuario digitar uma letra por acidente, creio que vai gerar uma Exception ao multiplicar o Valor do produto com uma String… enfim galera, qq vcs dizem? preciso de um Help enorme…
Galera encontrei essa solucão parcial… segue o codigo:
private void campoQuantidadeKeyReleased(java.awt.event.KeyEvent evt) {
int quantidade = Integer.valueOf(campoQuantidade.getText());
float valor = Float.valueOf(campoPrecoVenda.getText());
campoValorTotal.setText(String.valueOf(valor * quantidade));
}
Ele garante que o valor total seja atualizado toda vez que o usuario digitar um numero no campo quantidade…
porem ainda tenho que saber como lidar com a questão da entrada de Strings… ja notei que ele não para a execucão do programa,
nem retorna valores bugados no campo Valor Total… mas no meu compilador recebo toneladas de msgs vermelhas de erro…
aguardando ainda uma solucão mais eficiente ! ^^
Olha amigo vc poderia fazer assim ó converte a String do JTextField para um float, e faz um surround with try/catch nessa conversão e se a caso ela pegar uma IllegalArgumentException dizer algo na tela como “Não digite letras”;
Para o usuário digitar somente um valor númerico
procure por mascara em um campo JTextField,
eu tenho um pronto aqui, mas para ide netbeans dá pra usar no eclipse, mas tem que mudar…
Para campos que só tem números, eu uso esse metodo simples.:
public void ValidaNumero(JTextField Numero) {
long valor;
if (Numero.getText().length() != 0){
try { valor = Long.parseLong(Numero.getText());
}catch(NumberFormatException ex){
JOptionPane.showMessageDialog(null, "Esse Campo só aceita números" ,"Informação",JOptionPane.INFORMATION_MESSAGE);
Numero.setText("");
Numero.grabFocus();}}}
ai quando o item perde o focu eu o chamo, exemplo.: