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)
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:
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
}
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”.
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
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");
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?
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)
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);
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