Nao encontra varivel de uma textField e nao reconhece metodo getText() dentro de uma classe

6 respostas
M

Bom dia senhores. Estou com uma duvida basica sobre OO e classes

Eu tenho q seguinte funcao no meu programa

String vMTtypeT = this.vMTtype.getText(); int vMTtypeN = Integer.parseInt(vMTtypeT); //String to Integer String vMTtypeF = Integer.toHexString(vMTtypeN); //Integer to Hexadecimal if(vMTtypeN>=15) { tedArea.append(vMTtypeF +" "); } else { tedArea.append("0" + vMTtypeF +" "); }

Ela basicamente pega um valor de uma textField , converte em hexadecimal e imprime no textArea

O problema e que dezenas de campos como este, e nao queria ter que repetir a funcao para cada um (onde so mudam os nomes das varivaveis).

Nao consegui entender direito o funcionamento de classes, mas eu queria poder usar uma funcao como esse porem generica, assim modificando apenas as variaveis para o codigo se adaptar a outros casos

algo como

classe (texField, variavel1, varievel2, variavel3);

Porem quando tento construir uma classe, ele nao encontra a variavel correspondente ao textField
Cannot find symbol
symbol: variable vMTtype (variavel do texField)

e o mesmo para o getText
symbol: method getText()

public class TextFielReader { String vMTtypeT = this.vMTtype.getText(); //Erro nessa linha int vMTtypeN = Integer.parseInt(vMTtypeT); String vMTtypeF = Integer.toHexString(vMTtypeN);

Aguardo ajuda se possivel. Obrigado

6 Respostas

M

Tentei botar a vMTtype como public no codigo principal, porem ele nao deixa editar…

eberson_oliveira

Você poderia fazer assim:

public String StringToHex( String value ){
   int numero  = Integer.parseInt( value );  //String to Integer  
   String hexa = Integer.toHexString( numero ) + " "; //Integer to Hexadecimal       

   if( numero >= 15 ){  
      return hexa;    
   }  

   return "0" + hexa;   
}

E invocar da seguinte forma:

tedArea.append( StringToHex( this.vMTtype.getText() ) );

Entendeu?

Espero ter ajudado,

[]s

M

Isso! Esse eh o caminho, no caso so mudacia o campo vMTtype por outras variaveis correspondentes aos textfields no

tedArea.append( StringToHex( this.vMTtype.getText() ) );

Ele nao encontra erros na classe, mas na hora de invocar ele nao encontra o metodo StringToHex neste caso…

Desde ja agradeco!
[]'s

M

A sim... botei esse metodo fora da classe... Sendo assim funciona perfeitamente... Mas caso eu queira botar dentro de uma classe, como eu faria??

ex
public class TextFielReader  {

public String StringToHex( String value ){  
int numero  = Integer.parseInt( value );  //String to Integer    
String hexa = Integer.toHexString( numero ) + " "; //Integer to Hexadecimal         

if( numero >= 15 )
      {    
      return hexa;      
      }    
      return "0" + hexa;     
      }  
}
eberson_oliveira

Você poderia fazer assim:

public class Utilities{
   public static String StringToHex( String value ){    
      int numero  = Integer.parseInt( value );  //String to Integer      
      String hexa = Integer.toHexString( numero ) + " "; //Integer to Hexadecimal           
  
      if( numero >= 15 ){      
         return hexa;        
      }      

      return "0" + hexa;       
   }    
}

E invocar assim:

tedArea.append( Utilities.StringToHex( this.vMTtype.getText() ) );

Dessa forma o método que faz a conversão ficaria estático (pertencendo à classe e não a instância). Nesse caso você poderia acessar este método de qualquer lugar sem ter uma instância do objeto.

Você ainda poderia fazer algo assim:

public class Utilities{
   public String StringToHex( String value ){    
      int numero  = Integer.parseInt( value );  //String to Integer      
      String hexa = Integer.toHexString( numero ) + " "; //Integer to Hexadecimal           
  
      if( numero >= 15 ){      
         return hexa;        
      }      

      return "0" + hexa;       
   }    
}

Nessa opção você criaria esse método como sendo método de instância. Para acessar esse método você precisaria de uma instância desse objeto, daí você poderia obtê-lo assim:

Utilities objetoUtil = new Utilities();

E invocar o método da seguinte forma:

tedArea.append( objetoUtil .StringToHex( this.vMTtype.getText() ) );

Consegue ver a diferença?

Em todo caso, acredito que você esteja precisando estudar mais sobre OO e sobre Java. Te aconselho a dar uma boa lida nessa apostila [url]http://www.caelum.com.br/curso/fj-11-java-orientacao-objetos/[/url] para que você possa enteder melhor o conceito e aplicar de acordo com a sua situação.

Qualquer dúvida posta ae...

[]s

M
eberson_oliveira:
Você poderia fazer assim:
public class Utilities{
   public static String StringToHex( String value ){    
      int numero  = Integer.parseInt( value );  //String to Integer      
      String hexa = Integer.toHexString( numero ) + " "; //Integer to Hexadecimal           
  
      if( numero >= 15 ){      
         return hexa;        
      }      

      return "0" + hexa;       
   }    
}

E invocar assim:

tedArea.append( Utilities.StringToHex( this.vMTtype.getText() ) );

Dessa forma o método que faz a conversão ficaria estático (pertencendo à classe e não a instância). Nesse caso você poderia acessar este método de qualquer lugar sem ter uma instância do objeto.

Você ainda poderia fazer algo assim:

public class Utilities{
   public String StringToHex( String value ){    
      int numero  = Integer.parseInt( value );  //String to Integer      
      String hexa = Integer.toHexString( numero ) + " "; //Integer to Hexadecimal           
  
      if( numero >= 15 ){      
         return hexa;        
      }      

      return "0" + hexa;       
   }    
}

Nessa opção você criaria esse método como sendo método de instância. Para acessar esse método você precisaria de uma instância desse objeto, daí você poderia obtê-lo assim:

Utilities objetoUtil = new Utilities();

E invocar o método da seguinte forma:

tedArea.append( objetoUtil .StringToHex( this.vMTtype.getText() ) );

Consegue ver a diferença?

Em todo caso, acredito que você esteja precisando estudar mais sobre OO e sobre Java. Te aconselho a dar uma boa lida nessa apostila [url]http://www.caelum.com.br/curso/fj-11-java-orientacao-objetos/[/url] para que você possa enteder melhor o conceito e aplicar de acordo com a sua situação.

Qualquer dúvida posta ae...

[]s

Sim sim... Entendi perfeitamente. Muito obrigado pela ajuda. Na verdade eu estou estudando essa mesma apostila que voce indicou.

[]'s

Criado 16 de abril de 2010
Ultima resposta 19 de abr. de 2010
Respostas 6
Participantes 2