Pessoal , perdoem a minha ignorância no assunto, sou beem iniciante em java, estou tentando criar uma JComboBox apartir de uma coluna de um BD, que coletei através de uma consulta usando criteria, api do hibernate.
o retorno da consulta eh uma List.
Eu encontrei na net uma classe pronta que fornece um recurso de autocompletar do JComboBox, porem o construtor só aceita Object[][] itens. No exemplo o autor usa um String [] pré definido com os atributos.
Eu tentei passar a List com um cast mas não funcionou, preciso saber como faço pra criar apartir da minha List (que contém os objetos da coluna Nome) uma vetor de Strings para passar para o construtor! Se algum puder me ajudar agradeço! Obrigado!
Iterar sobre sua lista para criar um Object[][] pode ser a solução. Não sei se existe uma forma mais otimizada p/ resolver isso.
davidtiagoconceicao
Olha cara, eu acho meio brabo transformar uma List (unidimensional) em uma matriz Object[][] (bidimensional).
Para todos os casos, a interface List define o método toArray(), talvez te ajude:
Sugiro que você confira na documentação desta classe exatamente o que esta matriz Object[][] deve possuir.
P
pirado18
Amigos, eu fiz o seguinte código:
Listlista=/*resultado de uma consulta através de criteria, que carrega somente uma determinada coluna, a coluna nomes*/String[]listaNome=newString[lista.size()];intj=0;for(Iteratori=lista.iterator();i.hasNext();j++){listaNome[j]=String.valueOf(i.next());System.out.println(listaNome[j]+" "+String.valueOf(i.next()));//para visualizar a operação}//o resultado desse print na linha de comando eh: null /*um nome da lista*/
Tentei também:
Listlista=/*resultado de uma consulta através de criteria, que carrega somente uma determinada coluna, a coluna nomes*/String[]listaNome=newString[lista.size()];intj=0;for(Alunoalu:lista){listaNome[j++]=alu.getNome();}// continua null a listaNome
Eu não imaginava que era tão chato trabalhar com listas e String. Se alguem conseguir, converter essa list em um vetor de string, eu agraeço a ajuda! Valeu!
adolfo_eloy
Cara, eu peguei o seu código e criei um método na classe só para simular a geração dos dados da sua lista, e o que pude ver
é que seu código para iterar na lista e preencher o array funcionou corretamente. Caso queira testar com o código que escrevi, o mesmo
segue logo abaixo:
importjava.util.Iterator;importjava.util.List;publicclassTestList{publicstaticvoidmain(String[]args){// simulando a recuperacao dos dados da listaTestListtl=newTestList();List<String>lista=tl.getListaDeNomes();// teste com seu codigoString[]listaNome=newString[lista.size()];intj=0;for(Iterator<String>i=lista.iterator();i.hasNext();j++){listaNome[j]=String.valueOf(i.next());System.out.println(listaNome[j]+" - "+String.valueOf(i.next()));//para visualizar a operação }}/** * metodo para simular o retorno do seu banco de dados com uma lista de nomes * @return List<String> */publicList<String>getListaDeNomes(){List<String>l=newjava.util.ArrayList<String>();l.add("Juca");l.add("Zé Lelé");l.add("Nhô Lau");l.add("Chico Bento");returnl;}}
Eu achei estranho, quanto a cada iteração você realizar o next 2 vezes no iterator. Veja como ficou a saída do programa:
Sugiro verificar se o retorno da sua lista está trazendo os dados como você espera.