Problema para arrumar itens do banco na tela(jframe)[resolvido]

2 respostas
P
oi ah tenho que colocar numa tela todos os modulos que pertencerem a disciplina que for selecionada na combobox o q eu pensei em fazer era criar um array de JLabel do tamanho da qtde de modulos q virem do banco onde o texto deles seria o proprio numero do modulo.Ate ai tudo bem o problema é q eu tenho que colocar tb botoes(equivalem as atividades de cada modulo) tipo a qntde de botoes q serao criados eu pego do banco mas tipo eu nao to conseguindo arrumar na tela. Por exemplo se eu selecionei artes na combo deve aparecer 1 e 2 na tela e ao lado a qtde de botoes correspondentes so q se o modulo 1 tem 4 botoes e o modulo 2 tem 3 na linha do modulo 1 fica 7 botoes e na linha do modulo 2 fica vazio =( Sabem como eu posso arrumar isso?!:) Meu código é o seguinte:
public void determinaBotao()
	{
		int x = 40,y = 270;int o=60;//local onde o botao vai fik na tela
		int cargaHorariaTotalMode = 0;//recebe o valor da ch que ta armazenado no banco
		int resul=0;//qnte d botoes q vao ser criados
		String j=null;
		String v,v1,v2,v3;
		int n = 0,n1 = 0,n2 = 0,n3 = 0;

		try
		{
			ArrayList<Integer> qtBotos = new ArrayList<Integer> ();
			ArrayList<String> qtModulos = new ArrayList<String> ();
			Object item=null;
			if(comboBox.getSelectedItem()!=null)
				item=comboBox.getSelectedItem();
			Object ensino=null;int valorDoModulo=0;
			resultado=comando.executeQuery("select ensino from t where turma='"+t2.getText()+"'");
			resultado.next();
			ensino=resultado.getObject(1).toString();
			if(ensino.equals("Ensino Medio"))
				valorDoModulo=1;
			else if(ensino.equals("Ensino Fundamental"))
				valorDoModulo=2;
			resultado1=comando.executeQuery("select modulo from cargahoraria where Id_disciplina='"+item+"' and ensino='"+valorDoModulo+"' order by modulo");
			while(resultado1.next())
			{
				qtModulos.add(resultado1.getString(1));
			}
			for(int valor=0;valor<qtModulos.size();valor++)
				resultado=comando.executeQuery("select ch_total,plantao_cm_professor,plantao_sm_professor,tutoria,falta,modulo from cargahoraria where Id_disciplina='"+item+"' and modulo='"+qtModulos.get(valor)+"'");
			while(resultado.next())
			{
				j =resultado.getObject(1).toString();
				cargaHorariaTotalMode=Integer.parseInt(j);

				v =resultado.getObject(2).toString();
				n=Integer.parseInt(v);
				qtBotos.add(n);
				v1 =resultado.getObject(3).toString();
				n1=Integer.parseInt(v1);
				qtBotos.add(n1);
				v2 =resultado.getObject(4).toString();
				n2=Integer.parseInt(v2);
				qtBotos.add(n2);
				v3 =resultado.getObject(5).toString();
				n3=Integer.parseInt(v3);
				qtBotos.add(n3);

				int menor=n;
				if(menor>n1)
					menor=n1;
				else if(menor>n2)
					menor=n2;
				else if(menor>n3)
					menor=n3;
				//arrumar em cada linha a qntde de botoes
				
				resul=cargaHorariaTotalMode/menor;
				for(int numero=0;numero<qtBotos.size();numero++)
					b=new BotaoModulo[resul];	message=new String[b.length];

					for(int i=0;i<resul;i++)
					{
						BotaoModulo h=new BotaoModulo();
						b[i]=h;
						b[i].addMouseListener(new java.awt.event.MouseAdapter() {   
							public void mouseReleased(java.awt.event.MouseEvent e) {   
								if (e.getButton() == MouseEvent.BUTTON3) {   
									String comenta=JOptionPane.showInputDialog("");
									try {
										for(int j=0;j<message.length;j++)
										{
											if(comenta != null && b[j].getText()!=null)
												message[j]=comenta;
											System.out.println("b[j] "+b[j].getText()+" seu comentario é "+message[j]);
										}
									} catch (Exception e1) {
										// TODO Auto-generated catch block
										e1.printStackTrace();
									}
								}   
							}  

						}); 

						b[i].setBounds(x, y, o, 25);
						x+=o;Object h1=null;h1=comboBox.getSelectedItem();
						String texto = null;int maximoModulos;
						
						resultado=comando.executeQuery("select MAX(modulo) from disc_aluno where materia='"+h1+"' order by modulo");
						if(resultado.next())
							texto=resultado.getString(1);
						maximoModulos=Integer.parseInt(texto);System.out.println(texto+"**");
						JLabel l[]=new JLabel[qtModulos.size()];
						for(int nro=0;nro<l.length;nro++)
							l[nro]=new JLabel( qtModulos.get(nro));
						int x1=20,y1=30,u=270,r=25;
						if (comboBox.getSelectedItem() !=null && (!comboBox.getSelectedItem().equals(null)) && (!comboBox.getSelectedItem().equals("")))
							for(int i1=0;i1<l.length;i1++)
							{
								l[i1].setBounds(x1, u, y1, r);
								painel.add(l[i1]);
								painel.repaint();	
								u+=30;
								System.out.println(l[i1].getText());
							}
						if(i==(cargaHorariaTotalMode/menor)-1)
						{//se trocou o modulo troca a linha
							y+=30;System.out.println("dentro do if i: "+i);
						}	
						if(i==11)
						{
							y+=30;
							x=5;	b[i]=h;
							b[i].setBounds(x, y, o, 25);

						}
						else if(i==23)
						{
							y+=30;
							x=5;	b[i]=h;
							b[i].setBounds(x, y, o, 25);
						}


						painel.add(h);
						repaint();
					}
			}
		}
		catch(Exception e5)
		{
			JOptionPane.showMessageDialog(null, "Erro ");
			e5.printStackTrace();
		}


	}//metodo
não sei talvez eu esteja fazendo da maneira mais dificil... muito obrigada pela ajuda eu tenho aprendido muito aqui no guj =D

2 Respostas

P
ola, coloquei um while e agora aparecem mais botões de acordo com a quantidade certinha q esta la no banco mas eu não estou conseguindo arrumar eles na tela eu queria que ficasse a qntde certa d botoes em cada linha do painel d acordo com os modulos so q agora eles aparecem todos na mesma linha. segue em anexo o print do jeito que esta a tela,o codigo do metodo esta assim:
public void determinaBotao()
	{
		//local onde o botao vai fik na tela
		int x = 40,y = 30;int o=60;
		//recebe o valor da ch que ta armazenado no banco
		int cargaHorariaTotalMode = 0;
		//qnte d botoes q vao ser criados
		int resul=0,vezes=0;
		//variaveis para usar nos casting's das ch tiradas do banco
		String v,v1,v2,v3,j;
		int n = 0,n1 = 0,n2 = 0,n3 = 0;
		//crio variaveis int para arrumar a posição dos itens na tela
		int x1=20,y1=30,u=30,r=25;
		try
		{
			ArrayList&lt;Integer&gt; qtBotos = new ArrayList&lt;Integer&gt; ();
			ArrayList&lt;String&gt; qtModulos = new ArrayList&lt;String&gt; ();
			Object item=null;
			if(comboBox.getSelectedItem()!=null)
				item=comboBox.getSelectedItem();

			Object ensino=null;int valorDoModulo=0;
			System.out.println("select ensino from t where turma='"+t2.getText()+"'");
			//define de qual ensino vai buscar as disciplinas se medio ou fundamental
			resultado=comando.executeQuery("select ensino from t where turma='"+t2.getText()+"'");
			if(resultado.next())
			{
				ensino=resultado.getObject(1).toString();
				if(ensino.equals("Ensino Medio"))
					valorDoModulo=1;
				else if(ensino.equals("Ensino Fundamental"))
					valorDoModulo=2;
			}
			String maxM = null;int maximoModulo=0;
			resultado=comando.executeQuery("select Max(modulo) from cargahoraria where Id_disciplina='"+item+"' and ensino='"+valorDoModulo+"' order by modulo");
			while(resultado.next())
			{
				maxM=resultado.getString(1);System.out.println(maxM);
			}
			maximoModulo=Integer.parseInt(maxM);
			while(vezes&lt;maximoModulo)
			{
				System.out.println("select modulo from cargahoraria where Id_disciplina='"+item+"' and ensino='"+valorDoModulo+"' order by modulo");

				resultado1=comando1.executeQuery("select modulo from cargahoraria where Id_disciplina='"+item+"' and ensino='"+valorDoModulo+"' order by modulo");
				while(resultado1.next())
				{
					qtModulos.add(resultado1.getString(1));
				}

				for(int valor=0;valor&lt;qtModulos.size();valor++)
					resultado=comando.executeQuery("select ch_total,plantao_cm_professor,plantao_sm_professor,tutoria,falta,modulo from cargahoraria where Id_disciplina='"+item+"' and modulo='"+qtModulos.get(valor)+"'");
				while(resultado.next())
				{
					j =resultado.getObject(1).toString();
					cargaHorariaTotalMode=Integer.parseInt(j);

					v =resultado.getObject(2).toString();
					n=Integer.parseInt(v);
					qtBotos.add(n);
					v1 =resultado.getObject(3).toString();
					n1=Integer.parseInt(v1);
					qtBotos.add(n1);
					v2 =resultado.getObject(4).toString();
					n2=Integer.parseInt(v2);
					qtBotos.add(n2);
					v3 =resultado.getObject(5).toString();
					n3=Integer.parseInt(v3);
					qtBotos.add(n3);

					int menor=n;
					if(menor&gt;n1)
						menor=n1;
					else if(menor&gt;n2)
						menor=n2;
					else if(menor&gt;n3)
						menor=n3;
					//arrumar em cada linha a qntde de botoes

					resul=cargaHorariaTotalMode/menor;//qntde de botoes por modulo
					for(int numero=0;numero&lt;qtBotos.size();numero++)
						b=new BotaoModulo[resul];	message=new String[b.length];
						System.out.println(qtBotos.size()+"//");
						for(int i=0;i&lt;resul;i++)
						{
							BotaoModulo h=new BotaoModulo();
							b[i]=h;
							b[i].addMouseListener(new java.awt.event.MouseAdapter() {   
								public void mouseReleased(java.awt.event.MouseEvent e) {   
									if (e.getButton() == MouseEvent.BUTTON3) {   
										String comenta=JOptionPane.showInputDialog("");
										try {
											for(int j=0;j&lt;message.length;j++)
											{
												if(comenta != null && b[j].getText()!=null)
													message[j]=comenta;
												System.out.println("b[j] "+b[j].getText()+" seu comentario é "+message[j]);
											}
										} catch (Exception e1) {
											// TODO Auto-generated catch block
											e1.printStackTrace();
										}
									}   
								}  

							}); 

							b[i].setBounds(x, y, o, 25);
							x+=o;

							JLabel l[]=new JLabel[qtModulos.size()];

							//faço um for para ir criando as jlabels do l[]
							for(int nro=0;nro&lt;l.length;nro++)
							{
								l[nro]=new JLabel( qtModulos.get(nro));
								System.out.println("l[nro]: "+l[nro].getText());
							}
							//crio o painel 
							painelDosModulosBotoes =new JPanel();
							painelDosModulosBotoes.setBounds(20, 270, 900, 250);
							painelDosModulosBotoes.setVisible(true);
							painelDosModulosBotoes.setLayout(null);

							//se o item selecionado da combo não for null
							if (comboBox.getSelectedItem() !=null && (!comboBox.getSelectedItem().equals(null)) && (!comboBox.getSelectedItem().equals("")))
								//percorro o l[] e arrumo a posicao dos itns no painel
								for(int i1=0;i1&lt;l.length;i1++)
								{
									l[i1].setBounds(x1, u, y1, r);
									painelDosModulosBotoes.add(l[i1]);
									painel.add(painelDosModulosBotoes);
									repaint();
									u+=30;
									System.out.println(l[i1].getText());
								}

							painelDosModulosBotoes.add(h);
							painel.add(painelDosModulosBotoes);
							repaint();

						}

				}
				vezes++;
			}
		}
		catch(Exception e5)
		{
			JOptionPane.showMessageDialog(null, "Erro ");
			e5.printStackTrace();
		}}
obrigada pela ajuda>
P

se houver outra maneira de resolver esta questão eu aceito sugestões,o q eu preciso fazer é a escolha das disciplinas atraves de uma combo e após isso deve aparecer todos os modulos relacionados a estas e também deve aparecer todas as atividades relacionadas aos modulos de acordo com a carga horaria dos mesmos(modulos)
eu pensei no seguinte ao fazer o cod acima:
escolho na combo quimica(tem 6 modulos e cada modulo tem 10horas de carga horaria total,cada atividade vale 2hs) dai aparece na tela 6 modulos e ao lado de cada um 5 botões que trocam o txt(atividade).
obrigada :)

eu consegui arrumar tudo fazendo o seguinte:
if(moduloAtual<=maximoModulo)
						{	Component[] components = painelDosModulosBotoes.getComponents();
						for (Component component : components) {System.out
							.print("for...");
						if ( component instanceof BotaoModulo ) {
							System.out.print("///"+contaQuantosBotoes+"///"+resul);
							if(resul==contaQuantosBotoes)
							{
								y+=30;System.out.print(" "+"2 if");
								x=40;
							contaQuantosBotoes=0;
							}
						}

						}
						}
obg
Criado 11 de maio de 2011
Ultima resposta 18 de mai. de 2011
Respostas 2
Participantes 1