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.
Posso estar falando besteira, mas parece que você está tentando mostrar muitos dados numa única JTextField.
Ola Javax2011,
Até que não Man, para testar, tentei imprimir apenas uma palavra com 5 letras… O.o
Você poderia postar o trecho do código em que a JTextField recebe os dados?
[code] 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!");
}
}
[/code]
Não da certo nem no textField nem no JTextArea…
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.
Infelizmente tambem não é isso, eu apenas uso o For pra percorrer o arraylist para encontrar o codigo que eu preciso…
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);
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.
Tópico movido para o fórum de interface gráfica.
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…=(
Em que linha exatamente o erro ocorre?
O erro é bem claro, em algum lugar você está tentando fazer um cast de JTextField para String.
Olá ViniGodoy, segue 1º o metodo:
[code] 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!");
}
}
}
[/code]
a linha onde o erro é apresentado:
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:
OLá Vini,
Desculpe, o “CadastrarAeronave”, eu digitei errado (estava aproveitando de outra classe), o correto é “cadastrarAluno”, este é um arrayList.
Poste a declaração do ArrayList.
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.