Problema com casting de JScrollPane

0 respostas
mateusviccari

Olá, tenho um codigo que faz a varredura de alguns componentes de algum Container(como JPanel, JInternalFrame, etc.) e pra cada componente que ele encontra, caso seja um JPanel, um JTabbedPanel ou um JScrollPane, ele usa o mesmo metodo pra fazer a varredura desses componentes e tratar os dados. Usando JPanel e JTabbedPane da certo, mas quando tento usar num JScrollPane com um JTextArea dentro dele, da o seguinte erro:

[color=red]Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: javax.swing.JViewport cannot be cast to javax.swing.JScrollPane[/color]
Este erro acontece na linha 41 do código abaixo:

O que pode ser?

Segue meu código:

private void percorrerComponentes(Container master) { Component[] comp=master.getComponents(); for(int i=0;i<comp.length;i++){ String nomeVar=null,valor=null; if(comp[i] instanceof JTextField){ JTextField jtf=(JTextField)comp[i]; nomeVar=jtf.getName(); if(nomeVar.startsWith("s_")){//String valor="'"+jtf.getText()+"'"; }else if(nomeVar.startsWith("n_")){//Inteiro ou double valor=jtf.getText().replaceAll(",","."); } nomeVar=nomeVar.substring(nomeVar.indexOf("_")+1); dados.add(nomeVar); valores.add(valor); }else if(comp[i] instanceof JTextArea){ JTextArea jta=(JTextArea)comp[i]; nomeVar=jta.getName(); valor="'"+jta.getText()+"'"; nomeVar=nomeVar.substring(nomeVar.indexOf("_")+1); dados.add(nomeVar); valores.add(valor); }else if(comp[i] instanceof JComboBox){ JComboBox jcb=(JComboBox)comp[i]; nomeVar=jcb.getName(); if(nomeVar.startsWith("estado_")){ valor=((Estado)jcb.getSelectedItem()).id+""; }else if(nomeVar.startsWith("marca_")){ valor=((Marca)jcb.getSelectedItem()).id+""; }else if(nomeVar.startsWith("s_")){//String valor="'"+jcb.getSelectedItem().toString()+"'"; }else if(nomeVar.startsWith("n_")){//Inteiro ou double valor=jcb.getSelectedItem().toString().replaceAll(",","."); } nomeVar=nomeVar.substring(nomeVar.indexOf("_")+1); dados.add(nomeVar); valores.add(valor); }else if(comp[i] instanceof JScrollPane){ JScrollPane jsp=(JScrollPane)comp[i]; Component[] compJSP=jsp.getComponents(); for(int k=0;k<compJSP.length;k++){ percorrerComponentes((JScrollPane)compJSP[k]); //vai chamar este mesmo metodo que faz a leitura dos outros componentes, //pois dentro deste JTabbedPane pode ter paineis com outros JTabbedPanes. } }else if(comp[i] instanceof JPanel){ JPanel jp=(JPanel)comp[i]; Component[] compJP=jp.getComponents(); for(int k=0;k<compJP.length;k++){ percorrerComponentes((JPanel)compJP[k]); //vai chamar este mesmo metodo que faz a leitura dos outros componentes, //pois dentro deste JTabbedPane pode ter paineis com outros JTabbedPanes. } }else if(comp[i] instanceof JTabbedPane){ JTabbedPane jtp=(JTabbedPane)comp[i]; Component[] compJTP=jtp.getComponents(); for(int k=0;k<compJTP.length;k++){ if(compJTP[k] instanceof JPanel){ percorrerComponentes((JPanel)compJTP[k]); //vai chamar este mesmo metodo que faz a leitura dos outros componentes, //pois dentro deste JTabbedPane pode ter paineis com outros JTabbedPanes. } } } } }

Criado 1 de fevereiro de 2012
Respostas 0
Participantes 1