Problemas para recuperar informações

Tenho o seguinte problema:
Tenho um método para buscar inofrmações e transformar em string
no objeto esta armazenado o valor de código, descriçaõ e-mail e telefone:

public Object getValueAt(Object node, int column) { 
// TODO Auto-generated method stub 
Object tree = getFile(node); 

System.out.println("Valor de tree: " + tree); 

String[] stripedString = ((String)tree).split(","); 

System.out.println("Valor stripedString: " + stripedString); 
try { 

switch(column) { 
case 0: 
return stripedString[column]; 
case 1: 
return stripedString[column]; 
case 2: 
return stripedString[column]; 
case 3: 
return stripedString[column]; 
} 
} 
catch (SecurityException se) { } 
return null; 



} 

Erro:

Valor de tree: [Ljava.lang.Object;@169e11Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: [Ljava.lang.Object; 
at FileSystemModel.getValueAt(FileSystemModel.java:66) 
at TreeTableModelAdapter.getValueAt(TreeTableModelAdapter.java:67) 
at javax.swing.JTable.getValueAt(Unknown Source) 
at javax.swing.JTable.prepareRenderer(Unknown Source) 
at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source) 
at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source) 
at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source) 
at javax.swing.plaf.ComponentUI.update(Unknown Source) 
at javax.swing.JComponent.paintComponent(Unknown Source) 
at javax.swing.JComponent.paint(Unknown Source) 
at javax.swing.JComponent.paintChildren(Unknown Source) 
at javax.swing.JComponent.paint(Unknown Source) 
at javax.swing.JViewport.paint(Unknown Source) 
at javax.swing.JComponent.paintChildren(Unknown Source) 
at javax.swing.JComponent.paint(Unknown Source) 
at javax.swing.JComponent.paintChildren(Unknown Source) 
at javax.swing.JComponent.paint(Unknown Source) 
at javax.swing.JComponent.paintChildren(Unknown Source) 
at javax.swing.JComponent.paint(Unknown Source) 
at javax.swing.JComponent.paintChildren(Unknown Source) 
at javax.swing.JComponent.paint(Unknown Source) 
at javax.swing.JLayeredPane.paint(Unknown Source) 
at javax.swing.JComponent.paintChildren(Unknown Source) 

at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source) 
at javax.swing.JComponent.paintDoubleBuffered(Unknown Source) 
at javax.swing.JComponent.paint(Unknown Source) 
at java.awt.GraphicsCallback$PaintCallback.run(Unknown Source) 
at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source) 
at sun.awt.SunGraphicsCallback.runComponents(Unknown Source) 
at java.awt.Container.paint(Unknown Source) 
at sun.awt.RepaintArea.paintComponent(Unknown Source) 
at sun.awt.RepaintArea.paint(Unknown Source) 
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source) 
at java.awt.Component.dispatchEventImpl(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Window.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 

[color=red]Mensagem do moderador: ao postar codigos utilize as tags [ code ] e [ /code ].[/color]

olhando para o stackTrace, de uma olhada na linha
FileSystemModel.java:66, que eu chuto, deve ser esta aqui (chuto mais ou menos, pq eh o unico cast dentro desse metodo)

String[] stripedString = ((String)tree).split(",");

ao inves de receber uma String, vc esta recebendo um Array de Objects…
verifique o metodo Object tree = getFile(node); para saber o que ele devolve…

O método retorna:

protected Object[] getFile(Object node) {
    	CriaTree fileNode = ((CriaTree)node); 
    	return fileNode.getFile();       
        }

Que por sua vez na Classe CriaTree recupera os filhos do
registro na base de dados que devem ser retornados para uma TreeTable:

public CriaTree(Object[] parent) throws SQLException {
		if (parent == null) {
		   try {
		     	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		    		
		   }catch (ClassNotFoundException e) {
		    		System.err.print("ClassNotFoundException: ");
		    		System.err.print(e.getMessage());
		    		
		    		
		   }
		   try {
		   		con = DriverManager.getConnection(url, "user", "password"); //"user"
		   		stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
		    				
		   }catch(SQLException ex){
		   		  msg=ex.getMessage();
		          JOptionPane.showMessageDialog(null,msg,"Erro",JOptionPane.ERROR_MESSAGE);
		                
		              
		   }
		   uprs = stmt.executeQuery("SELECT * FROM Departamento");
	    	while (uprs.next()){
	    		   cod = uprs.getString("COD_DEPTO"); 
	    		   String desc = uprs.getString("DESC_DEPTO"); 
	    		   arrayPai.add(cod + "," + desc + "," + ""  + "," + ""); 
	    	   break;
	    	      	 
	    	 } 
	    	
	    	
	    	this.parent = arrayPai.toArray(); 
		    
		} else {
			while (uprs.next()){
				cod = uprs.getString("COD_DEPTO");
				arrayPai.add(cod ); 
	    	   break;
				
				

			}
			  
			this.parent = arrayPai.toArray(); 
			
		}		
		
	}

[color=red]Mensagem do moderador: ao postar codigos utilize as tags [ code ] e [ /code ].[/color]

O problema esta sendo esse pegar o array de objetos e mostrar as informações tem ela.

O padrão passando public Object getValueAt(Object node, int column) é
definido pela propria classe pois ela herda classe TreeTableModel,
não existe uma forma de guardar um valor em um objeto tipo:

Objeto ob = “codigo 10”;

E depois recuperar este valor ?

eu nao consegui entender muito bem o que vc quer fazer, mas para pegar um objeto do array, faca assim:

Object[] array = getFile ( ... );
Object primeiro = array[ 0 ]; //vai devolver o primeiro objeto do array
int tamanho = array.length; // vai devolver o comprimento do array

for (int i = 0; i < tamanho; i++) {
    Object objeto = array[i]; //pegando o i-esimo elemento do array
    .... // faca o que vc quer fazer com ele
}

ajuda?

Sim , porem nao é tao “simples” assim.

String codigo = "10";
Object node = codigo;

codigo = (String) node;
System.out.println("->"+codigo);

Pra acontecer um ClassCastException faça assim:

String codigo = "10";
Object node = codigo;

codigo = (Integer) node;
System.out.println("->"+codigo);

Valeu? Boa sorte.
:thumbup:

O que eu preciso fazer é o seguinte imagien que tenho meu array
Estou lendo meu banco de dados e guardando as inforamções no array
tipo
Array: - Códiog do cliente no banco
array[0] = “01”;
array[1] = “02”;
E assim por diante.
Ai do outro lado (interface) vou mostrar as informações para o usuário em uma treeTable.
então no método getValueAt(Object node, int column) eu recebo o objeto
e a coluna, então devo recuperar as informações e nostrar em tela o valor
“01”, “02” e assim por diante.
Como eu faço para ler o array na poisção [0] e mostrar que nesta posição foi gravado o valor “01”.

return array[column];

nao resolve?

Para o pai do reegistro na arvore funciona
mas para o filho não pois eu grvai no filho array[0] = “01,fundição,99814744,xx@bol.com.br”.
Por isso queria converter para String para recuperar o valor entre a “,”
E mostrar me tela.
fica assim

Codigo Descrição e-mail fone
“01”
|
|-> 01 Fundição 994455
|-> 02 Estoque 664545
Entende a minha dor de cabeça

entao faca


String mensagem = (String) array [ column ];

se voce tem certeza que o array contem Strings, caso contrario tera a ClassCastException de novo

Case resolvi o problema com a seguiten linha

System.out.println(column);
return getChildren(node) [column];

Buscando o valor com o numero da coluna, só esta gerando este erro com indice do array
0
1
2
0
1
Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: 2

Bom dia.
Resolvi fazer uma revolução no meu código e parece estar dando certo só apreceu uma pequena dúvida do modo como esta no exemplo abaixo funciona:
Account account1 = new Account(“Yahoo”, “POP3/SMTP”);
account1.addEmailAddress("abe@yahoo.com");
account1.addEmailAddress("sue@yahoo.com");

Account account2 = new Account(“EDS”, “POP3/SMTP”);
account2.addEmailAddress("mark@eds.com");
account2.addEmailAddress("jane@eds.com");

Account account3 = new Account(“NOFFCROFF”, “POP3/SMTP”);
account3.addEmailAddress("mark@noffcroff.org");
account3.addEmailAddress("manny@noffcroff.org");
account3.addEmailAddress("abe@noffcroff.org");
account3.addEmailAddress("whocares@noffcroff.org") ;

accounts = new ArrayList();
accounts.add(account1);
accounts.add(account2);
accounts.add(account3);
}
O numero esta fixo ccount1, ccount2 e ccount3, mas e se eu não souber o numero de contas que estiver lendo, vamos dizer que eu esteja lendo meu banco de dados, e pode ter uma numero muito grande registros,
ccount1…N como eu faço???
Posso deixar fixo o no accounts que não vai dar problema?
Eu para cada registro lido no meu banco tenho que ter um nome diferente tipo accounts1, accounts2,…etc caso isso seja necessário como criar o nome dinamicamente em função da quantidade de registros lidos, não sei se isso é possivel?

o ArrayList cresce de acordo com a necessidade entao vc nao precisa se preocupar com isso

ok deixa eu explicar melhor (e depois de terminar de ler o post direito)

o count1 eh apenas um “atalho” para o objeto que vai estar em memoria…
nao eh necessario ter infinitos nomes diferentes, pois o mesmo nome pode ser “ligado” a objetos diferentes, por exemplo:

Account acc = new Account ( ... );
//faz alguma coisa com o acount

acc = new Account ( ... );
//agora perdi a referencia ao outro account, mas tenho um account novo

o exemplo acima eh bem bobo, mas acho que chegou o ponto em que vc deve comecar a ler um tutorial mais basico para vc entender o que sao classes e objetos (se eu nao me engano tem um aqui mesmo no guj)

[edit]
segue o link
http://www.guj.com.br/java.tutorial.artigo.149.1.guj
[/edit]

Esta parte eu consegui resolver depois que postei a mensagem foi mais tranqui-lo que eu pensava.
O MAIOR PROBLEMA CONTINUA SENDO A RECUPERAÇÃO DOS VALORES
Eu gravo em um array o código do funcionario:

[code]private ArrayList parents= new ArrayList();

CreateParent parent1 = new CreateParent(cod, desc);
ResultSet uprs2 = stmt2.executeQuery(query);

	   	while (uprs2.next()){
	   		
	   	   String codigo = uprs2.getString("COD_FUNC"); 
	   	   String nome   = uprs2.getString("NOME_FUNC"); 
	   	   String email  = uprs2.getString("EMAIL"); 
	   	   String fone   = uprs2.getString("NUM_FONE"); 
	   	   parent1.addCodList(codigo);
	   	   parent1.addEmailAddress(email);
	   	   parent1.addFoneNumber(fone);
	   	   parent1.addNameList(nome);
	   	  
	   
	   	 
	   	 } 
	   
	    parents.add(parent1); 

Me metodo
public void addCodList(String codigo) {
childremcod.add(codigo);
}

e para recuperar o valor
Uso o método:
public String[] getCod(int column) {
System.out.println(((String[]) childremcod.toArray(new String[0])));
return ((String[]) childremcod.toArray(new String[0]));
}[/code]O problema e que o retorno vem no seguinte formato:
[Ljava.lang.String;@197d257
[Ljava.lang.String;@194df86
[Ljava.lang.String;@1ac04e8
E não o valor do codigo do funcionário que 01, 02, 03
Este é o problema