Metodos com objetos do formulário como parâmetro

6 respostas
khaue_viana_

Pessoal sou programador C# e nessa plataforma trabalho muito com metodos que tem como parâmetros objetos dos formulários como TextBox( java = JTextField) e etc.

Estou estudando JAVA usando a IDE Netbeans, e criei alguns metodos parametrizados com JPanel e também com JTextField. Mas o que mais me assusta é que não da erro mas também não dá certo, e se faço os comandos direto no JFrame ai sim dá certo.

Exemplo do meu código

Metodo para validar os campos feitos na minha classe

public void ValidaNumero(JTextField Numero)
{
    long valor;

    if (Numero.getText().length() != 0)
    {
        try
        {
            valor = Long.parseLong(Numero.getText());
        }
        catch(NumberFormatException ex)
        {
            String validar = Numero.getText();
            validar = validar.substring(0, validar.length() - 1);
            Numero.setText(validar);
            Numero.grabFocus();
        }
    }
}

Agora utilizando ele no meu JFrame.

private void txtNumero1KeyPressed(java.awt.event.KeyEvent evt) {                                      

        calc.ValidaNumero(txtNumero1);

//Calc é a instacia da minha classe!
}

MAS NÃO DEU CERTO!!!

GOSTARIA DE SABER SE ALGUEM PODE ME AJUDAR

6 Respostas

W

Caro [email removido],

Tente utilizar o Debur da ide, pode lhe ajudar, a principio não vi erro no seu codigo.

S

a construção do seu cenario entendi que você terá 3 objetos, JFrame , JTextField e um Validador certo?
então altere o tipo de retorno do metodo ValidaNumero para boolean por exemplo e você verá se a operação “remota” foi bem sucedida…
de uma olhada em diagramas de sequencia e, principalmente em troca de mensagens entre objetos.

khaue_viana_

Você diz para eu fazer dessa forma:

public boolean ValidaNumero(JTextField Numero)  
{  
    
    
    long valor;  
  
    if (Numero.getText().length() != 0)  
    {  
        try  
        {  
            valor = Long.parseLong(Numero.getText());  
        }  
        catch(NumberFormatException ex)  
        {  
            String validar = Numero.getText();  
            validar = validar.substring(0, validar.length() - 1);  
            Numero.setText(validar);  
            Numero.grabFocus();  
        }
        
        return true;
    }
    else
    {
        return false;
    }
}

Não sei se é da forma que me disse, e num entendi direito sua resposta, o que mudaria com boolean, e um problema é que no erro eu faço um tratamento. Me desculpe, mas agradeço a atençao!!

Anime

Oi,

Exemplo:

private int validaRm()
{
    int rm=-1;
    if(tfRm.getText().length()==0)//o rm foi digitado?
    {
        JOptionPane.showMessageDialog(null,"Atenção:Digite o Rm");
        tfRm.requestFocus();
    }    //senão foi digitado
    else
    {
        try
        {
            rm=Integer.parseInt(tfRm.getText());
            if(rm<0)
            {
                JOptionPane.showMessageDialog(null,"Atenção:digite um valor numerico inteiro positivo");
                tfRm.requestFocus();
            }
        }
        catch(NumberFormatException exc)
        {
            JOptionPane.showMessageDialog(null,"Atenção:digite um valor numerico inteiro");
            tfRm.requestFocus();
        }
    }    
    return rm;
}

É só vc mudar de inteiro para long…

Da uma olhadinha nos links abaixo:

http://www.telecom.ntua.gr/HTML.Tutorials/java/exceptions/catch.html

http://www.tiexpert.net/programacao/java/try-catch-finally.php

khaue_viana_

Mas esse metodo foi criado no JFrame certo?

O meu problema é que passo um JTextField como parametro!

Mas agradeço a atenção!

Eric_Yuzo

Se eu entendi direito, este método só está removendo os números. Uma maneira mais fácil de fazer isto seria utilizar o método replaceAll:

textField.getText().replaceAll("[^0-9]", ""); //Substitui tudo que não for número por uma String vazia

O mais interessante seria fazer o tratamento diretamente no Document ao invés de usar o KeyListener. Neste artigo você encontra a explicação com exemplo de como utilizá-lo: Controlanco um JTextField.

Criado 20 de setembro de 2010
Ultima resposta 21 de set. de 2010
Respostas 6
Participantes 5