Preenchimento de Tela em tempo de Execução

3 respostas
A

:sad: Sou iniciante em Java. Estou montando uma tela em tempo de execução, ou seja, a tela é montada
baseada no retorno de uma consulta a um banco de dados. Nesta tela eu tenho:
2 JLabels com valores retornados da pesquisa
1 JCheckBox para o usuário selecionar
1 JTextField para o usuário preencher a quantidade
Esses controles são colocados na tela para cada registro retornado pela pesquisa.
Minha dúvida é: Como nomear o checkbox de modo que eu possa saber quais foram selecionados?
E para o TextField? Tem como criar um Vetor ou um Array de CheckBox?

Segue o código que atualmente monta a tela para dar uma idéia:

public class Medicamento extends JPanel{
   public Medicamento(){
	conexaoMDB conec = new conexaoMDB();
	String sql = "select cod_remedio, desc_remedio, dosagem_remedio from Tab_Remedio where tipo_remedio='R'";
	System.out.println("sql=" + sql);
	int tam = 0;
	int tam2 = 0;
	String nomel, nomet;
	try{
		ResultSet rs = conec.setConexao(sql, "c");
		rs.last();
		tam2 = rs.getRow();
		rs.beforeFirst();
		int tamm =(int)Math.abs(tam2 / 2);
		if ((tam2 % 2 ) != 0){
			tamm +=1;
		}
						
		
		setLayout(new GridLayout(tamm, 8, 1, 1));
		while (rs.next()){
			nomel = "";
			nomet = "";
			//tam += 1;
			//setLayout(new GridLayout(1,4));
			nomel = "l" + rs.getString("COD_REMEDIO");
			nomet = "t" + rs.getString("COD_REMEDIO");
			JCheckBox cRem = new JCheckBox();
								
			add(cRem);
			add(new JLabel(rs.getString("DESC_REMEDIO")));
			add(new JLabel(rs.getString("dosagem_remedio")));
			JTextField tRem = new JTextField();
			add(tRem);
				
		}
	}
	catch(Exception ex){
		System.out.println("erro no ResultSet");
		System.out.println(ex.getMessage());
	}

   }

}

:grin: :wink:
Agradeço qualquer sugestão,
Obrigada,
Andrea
[/img]

Editado por JavaTeco. Quando tiver código no post, por favor, utilize a tag Code. Obrigado.

3 Respostas

S

Não sei se entendi direito mas ai vai:

Eu faria algo assim:

vc vai criar uma classe que herda de javax.swing.JPanel
aqui dentro vai estar o que vc quer mostrar na tela para um elemento da consulta…
os labels, o checkbox e o textfield

quando vc faz a consulta, vc monta para cada retorno, uma instancia dessa classe que herda de JPanel e constroi um array com todas as instancias dessa classe que vc criou (sendo qeu cada instancia se refere a um elemento retornado da sua consulta)

depois vc vai pegar esse array de panel e ir incluindo no frame que vc quer mostrar para o usuário (use algum layout manager para facilitar a sua vida, eu gosto do GridBagLayout…)

desse jeito vc sabe o que foi alterado em qual elemento e depois é só ir salvando no bd novamente ou o que vc quiser fazer com os dados.

Não sei se fui claro, qualquer coisa poste ai…

J

Respondendo a primeira pergunta: Seria mais facil vc instânciar os Checkbox em um List, por exemplo, em um ArrayList e adicionar no meu conteiner… Ai fica facil vc saber quais são os Checkboxs que estão selecionados, bastanto apenas percorrer posição por posição da List verificando se ele está selecionado (seuCheckBox.getSelected())… blz?

Respondendo a segunda pergunta: Existem mil maneiras de fazer Neston, não sei qual é sua necessidade… mas vc tb pode instânciar em um Vector ou ArrayList tb…

Qq coisa estamos ai…

J

“Samuel_Pessorrusso”:
Não sei se entendi direito mas ai vai:

Eu faria algo assim:

vc vai criar uma classe que herda de javax.swing.JPanel
aqui dentro vai estar o que vc quer mostrar na tela para um elemento da consulta…
os labels, o checkbox e o textfield

quando vc faz a consulta, vc monta para cada retorno, uma instancia dessa classe que herda de JPanel e constroi um array com todas as instancias dessa classe que vc criou (sendo qeu cada instancia se refere a um elemento retornado da sua consulta)

depois vc vai pegar esse array de panel e ir incluindo no frame que vc quer mostrar para o usuário (use algum layout manager para facilitar a sua vida, eu gosto do GridBagLayout…)

desse jeito vc sabe o que foi alterado em qual elemento e depois é só ir salvando no bd novamente ou o que vc quiser fazer com os dados.

Não sei se fui claro, qualquer coisa poste ai…

Foi mais rápido do que eu em… 1 minuto… heheheheheh

Criado 17 de junho de 2004
Ultima resposta 17 de jun. de 2004
Respostas 3
Participantes 3