Duvida como colocar do banco Mysql em um frame (resolvido)

5 respostas
lusfilip

Olá galera.. estou com uma duvida aqui...

Eu to com um programa de cadastro de selecoes e não estou conseguindo o seguinte:

Eu faço o cadastro da selecao que tem 2 parametros somente: Nome e grupo,

esta fazendo corretamente o cadastro das selecoes e talz...

Mas eu quero fazer agora um JFrame que contenha as selecoes de acordo com o que eu to cadastrando.

eu to fazendo meio que forcado:

public List<TabelaSelecao> getLista(String grupo) throws SQLException{
	            String sql = "select NOMESELECAO from selecao where GRUPO = '"+grupo+"'";
	            System.out.println(sql);
	            PreparedStatement stmt = this.conexao.prepareStatement(sql);
	            ResultSet resultado = stmt.executeQuery();

	            List<TabelaSelecao> ListaSelecao = new ArrayList<TabelaSelecao>();

	            // Enquanto existe proximo - while tem que ser escrito em minusculo
	            while(resultado.next()) {
	              TabelaSelecao c1 = new TabelaSelecao();
	              c1.setNomeSelecao(resultado.getString("NOMESELECAO"));
	             // c1.setGrupo(resultado.getString("GRUPO"));
	              ListaSelecao.add(c1);
	            
	            }
	            resultado.close();
	            stmt.close();
	            return ListaSelecao;
	    }
}
Dae eu to colocando elemento por elemento como abaixo:
lista = cs.getLista("A");
			 
			
				ts=lista.get(0);
				selecaoA1 = new JLabel(ts.getNomeSelecao());
				selecaoA1.setBounds(150,150, 200, 30);
				tela.add(selecaoA1);
			
				ts=lista.get(1);
				selecaoA2 = new JLabel(ts.getNomeSelecao());
				selecaoA2.setBounds(150,175, 200, 30);
				tela.add(selecaoA2);
			
				ts=lista.get(2);
				selecaoA3 = new JLabel(ts.getNomeSelecao());
				selecaoA3.setBounds(150,200, 200, 30);
				tela.add(selecaoA3);
				
				ts=lista.get(3);
				selecaoA4 = new JLabel(ts.getNomeSelecao());
				selecaoA4.setBounds(150,225, 200, 30);
				tela.add(selecaoA4);

o problema é o seguinte, se eu forco deste jeito e nao tem elemento na tabela da erro, logico nao tem e eu to puxando, mas eu queria que fosse automaticamente, usando um while seria otimo mas como usar?

Alguem tem alguma ideia?

5 Respostas

silviomoreto

qual erro ta dando?? ArrayIndexOutOfBounds??

se for eh pq na sua lista vc ta dando get em algo q nao existe…
na sua lista vc pode fazer um for do tamanho q ele for (lista.size())

Vmaia

Ve se isso ajuda :smiley:

inteiro  : w, x, y, z = 150 ;
  inteiro  : variaX =  25 ;
  inteiro  : c = 0 ;
	E Enquanto lista !=  NULO faça {
		itemDaLista = lista.item();
	
		Selecao selecao = JLabel(itemDaLista.NomeSelecao());
		selecao.setBounds(w, (x + (variaX * c ) ) , y, z);
		tela.add(selecao);  
		c++;
	}
lusfilip

vou testar aqui se conseguir eu coloco aqui

lusfilip

silviomoreto:
qual erro ta dando?? ArrayIndexOutOfBounds??

se for eh pq na sua lista vc ta dando get em algo q nao existe…
na sua lista vc pode fazer um for do tamanho q ele for (lista.size())

Nao cara deixa eu te explicar, se eu coloco para aparecer 4 Jlabel e só tem 3 no banco de dados ele da erro, porque? porque só tem 3 elementos no banco e o programa ta puxando 4.

Eu quero é que coloque Jlabel automaticamente… tipo um vetor de Jlabel, mas to com a duvida em qual while eu fazer para eu mudar o index em cada grupo.

Exemplo:

os grupos eu sei que serao sempre 8. mas os elementos podem ser menos ou mais doque 1. quero um while para mudar os grupos

lusfilip

Valeu aí galera mas eu consegui com o seguinte codigo

lista = cs.getLista("A");
			 
			while (indice < lista.size()&& indice<4){
				ts=lista.get(indice);
				selecao = new JLabel(ts.getNomeSelecao());
				selecao.setBounds(150,variaX, 200, 30);
				tela.add(selecao);
				indice++;
				cont++;
				variaX+=25;
			}

Coloquei um indice inicado com 0 e percorrendo a lista ate achar os 4 primeiros valores... porque os 4 primeiros, porque são 4 selecoes em cada grupo e mesmo eu cadastrando mais selecoes eu vou mostrar apenas as 4 primeiras.. é justamente o que eu queria.

Criado 20 de maio de 2010
Ultima resposta 27 de mai. de 2010
Respostas 5
Participantes 3