Ajuda com JTextField e JTextArea

17 respostas
J

Bom Dia, gostaria, se possivel, de uma auxilio com JTextField e JTextArea, estou desenvolvendo uma aplicação que guardara em um arraylist diversos dados cadastrais de clientes e a partir de uma busca baseada num codigo identificador, serao retornados os dados do cliente em questão. O meu problema ocorre quando eu tento imprimir estes dados em um JTextArea e um JTextField, no caso do JTextArea o erro: “Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: javax.swing.JTextField cannot be cast to java.lang.String” é apresentado…vocês saberia me informar porque isso ocorre?

PS:Efetuei uma bvusca no GUJ antes de criar este topico, e o erro informado ocorre mesmo que eu utilize o JTextArea.append();

Desde ja muito obrigado.

17 Respostas

J

Posso estar falando besteira, mas parece que você está tentando mostrar muitos dados numa única JTextField.

J

Ola Javax2011,

Até que não Man, para testar, tentei imprimir apenas uma palavra com 5 letras… O.o

J

Você poderia postar o trecho do código em que a JTextField recebe os dados?

J
for(int i = 0; i < cadastrarClientes.size(); i++) {
         
            if(cadastrarClientes.contains(codigo)) {
            
               auxiliar = i;
					
                String nome_auxiliar = cadastrarAeronave.get(i);
               String codigo_auxiliar =(String) cadastrarAeronave.get(i+1);
               String idade_auxiliar = (String)  cadastrarAeronave.get(i+2);

               codigo.setText(codigo_auxiliar);
               nome.setText(nome_auxiliar);
               idade.setText(idade_auxiliar);
               
              areas.append((String) cadastrarAeronave.get(i+1));
            
            }
            
            
            else {
            
               JOptionPane.showMessageDialog(null,"Aeronave nao localizada!");
            
            }
         
         }

Não da certo nem no textField nem no JTextArea....

J

Imagino que o erro esteja neste trecho:

O certo:

O size() retorna a quantidade de elementos, por exemplo 5.

Mas os índices começam do 0, então você tem os clientes 0, 1, 2, 3 e 4.
E como o i está indo até 5, você pesquisa por um elemento que não existe, e ai dá o erro.

J

Infelizmente tambem não é isso, eu apenas uso o For pra percorrer o arraylist para encontrar o codigo que eu preciso…

J

Você já conferiu se nesse trecho as Strings estão realmente recebendo alguma coisa?

String nome_auxiliar = cadastrarAeronave.get(i); String codigo_auxiliar =(String) cadastrarAeronave.get(i+1); String idade_auxiliar = (String) cadastrarAeronave.get(i+2);

ViniGodoy

O erro é bem claro. Diz que você não pode converter um JTextField para uma String.
Para obter a String de um JTextField, você deve chamar o método getText().

Procure na exception qual classe do seu código está fazendo com que a exception seja disparada, e corrija lá o problema.

ViniGodoy

Tópico movido para o fórum de interface gráfica.

J

Obrigado pelo Auxilio Javax2011 e ViniGodoy ^^

ViniGodoy no caso eu estou precisando obter um valor que esta em um arraylist e joga-lo em um textField, é isto que não estou conseguindo fazer…=(

ViniGodoy

Em que linha exatamente o erro ocorre?
O erro é bem claro, em algum lugar você está tentando fazer um cast de JTextField para String.

J

Olá ViniGodoy, segue 1º o metodo:

public void consultarCliente() {
      
      
         int auxiliar = 0;
			
        JOptionPane.showInputDialog("Insira o codigo do cliente:");       
      
   
         for(int i = 0; i < cadastrarAluno.size()-1; i++) {
         
            if(cadastrarcliente.contains(codigo)) {
            
               auxiliar = i;
					
               String codigo_auxiliar = (String) cadastrarAluno.get(auxiliar);
               String nome_auxiliar =(String) cadastrarAluno.get(auxiliar+1);
               String idade_auxiliar = (String) cadastrarAluno.get(auxiliar+2);
               
					  
		codigo.setText(codigo_auxiliar);  
              nome.setText(nome_auxiliar);  
              idade.setText(idade_auxiliar); 
               
             
            
            }
            
            
            else {
            
               JOptionPane.showMessageDialog(null,"cliente nao localizado!");
            
            }
         
         }
               
             
      }

a linha onde o erro é apresentado:

String nome_auxiliar = (String) cadastrarAeronave.get(auxiliar);
ViniGodoy

Por que você está fazendo o cast do valor de retorno para String? Como vc declarou essa o cadastrarAeronave?

Obviamente vc acabou inserindo um JTextField dentro da lista, ao invés do seu valor. Para evitar bugs desse tipo, o ideal é usar os generics:

J

OLá Vini,

Desculpe, o “CadastrarAeronave”, eu digitei errado (estava aproveitando de outra classe), o correto é “cadastrarAluno”, este é um arrayList.

ViniGodoy

Poste a declaração do ArrayList.

J
ViniGodoy

Por não colocou aí o tipo que vai dentro do ArrayList? Por exemplo, se for de Strings, a declaração correta é:

Isso vai evitar o cadastro acidental de objetos que não são do tipo do arraylist. E vai evitar também um monte de casts.

Criado 11 de outubro de 2011
Ultima resposta 13 de out. de 2011
Respostas 17
Participantes 3