()*

7 respostas
T

7 Respostas

T

.

T

.

T

.

T

.

RenataFA

Thiago,,, se vc continuar com esse comportamento de ficar "re-enviando" a msma msg várias vezes não vai obter resultados aqui no fórum.
Leia as regras do fórum, tenha bons modos e o povo ajuda. Se ficar desse jeito o pessoal não vai ajudar propositalmente.

Alias, mandar msg em PVT pra que alguém veja seu tópico público tb é pra lá de estranho...

Enfim, vamos lá, vou tentar te ajudar. Mas sem desesperos ok?

Eu faço o que vc quer em alguns lugares aqui, não só com JButtons. Por ex, nesse pedaço da tela eu faço, dá uma olhada:

[img]http://www.gznet.com.br/boo/guj/tela.jpg[/img]

Todos esses campos eu monto em tempo de execução, de acordo com o que for selecionado em um combo que tem antes. Cada vez q muda o combo, eu tiro todos esses componentes da tela e refaço.
Se vc prestar atenção, em cada linha eu tenho um label, um botão, um combo e outro label.

Agora o trecho do fonte onde eu faço isso (dei uma resumida, pra ficar só o que te interessa):

private void carregaFiltrosRelatorioNaTela(){
		
		// crio um array com os componentes que deverão aparecer na tela, já formatados e prontos para serem exibidos
		Component[][] c = new Component[rp.aFiltros.size()][4];
		int pos = 0; // posicao que o componente estara no array de componentes dentro do panel
		
		for (int i = 0; i < rp.aFiltros.size(); i++){
			
			JLabel labelA = new JLabel();
			labelA.setFont(new java.awt.Font("Arial", 0, 11));
			labelA.setForeground(cor);
			labelA.setText(filtro.getCampo().getDescricao());
			labelA.setPreferredSize(new java.awt.Dimension(130, 14));
			labelA.setName(String.valueOf(pos++));
			
			JButton botao = new JButton();
	        botao.setFont(new java.awt.Font("Arial", 0, 12));
	        botao.setForeground(cor);
	        botao.setText("...");
	        botao.setToolTipText(BaseLib.getRb().getString("preencherFiltro"));
	        botao.setPreferredSize(new java.awt.Dimension(16, 16));
	        botao.addActionListener(rp.actionListener);
	        botao.addKeyListener(rp.keyListener);
	        botao.setName(String.valueOf(pos++));
	        
	        JComboBox combo = new JComboBox();
	        combo.setFont(new java.awt.Font("Arial", 0, 11));
	        combo.setForeground(cor);
	        combo.setToolTipText(BaseLib.getRb().getString("escolherFiltro"));
	        combo.setModel(new javax.swing.DefaultComboBoxModel(opcao.toArray()));
	        combo.setPreferredSize(new java.awt.Dimension(90, 22));
	        combo.addKeyListener(rp.keyListener);
	        combo.setName(String.valueOf(pos++));
			
			JLabel labelB = new JLabel();
			labelB.setFont(new java.awt.Font("Arial", 0, 11));
			labelB.setForeground(cor);
			labelB.setText("");
			labelB.setName(String.valueOf(pos++)); // não especifico o tamanho para esse label para que ele fique "autosize" durante a execução

			c[i][0] = labelA;
			c[i][1] = botao;
			c[i][2] = combo;
			c[i][3] = labelB;
		}
		//

		// limpo os componentes do panel
		rp.pnlFiltro.removeAll();
		//
		
		// adiciono os componentes no panel
		org.jdesktop.layout.GroupLayout pnlFiltroLayout = new org.jdesktop.layout.GroupLayout(rp.pnlFiltro);
		rp.pnlFiltro.setLayout(pnlFiltroLayout);

		ParallelGroup grupoParalelo1 = pnlFiltroLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING);
		ParallelGroup grupoParalelo2 = pnlFiltroLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING);
		ParallelGroup grupoParalelo3 = pnlFiltroLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING);
		ParallelGroup grupoParalelo4 = pnlFiltroLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING);

		for (int i = 0; i < c.length; i++){
			grupoParalelo1.add(c[i][0], org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE);
			grupoParalelo2.add(c[i][1], org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE);
			grupoParalelo3.add(c[i][2], org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE);
			grupoParalelo4.add(c[i][3], org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE);
		}

		pnlFiltroLayout.setHorizontalGroup(
				pnlFiltroLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
				.add(pnlFiltroLayout.createSequentialGroup()
						.addContainerGap()
						.add(grupoParalelo1)
						.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
						.add(grupoParalelo2)
						.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
						.add(grupoParalelo3)
						.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
						.add(grupoParalelo4)
						.addContainerGap((int)rp.scpFiltro.getSize().getWidth(), Short.MAX_VALUE))
		);

		SequentialGroup grupoSequencial = pnlFiltroLayout.createSequentialGroup().addContainerGap();

		for (int i = 0; i < c.length; i++){
			grupoSequencial.add(pnlFiltroLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
					.add(c[i][2], org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
					.add(c[i][1], org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
					.add(c[i][0], org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
					.add(c[i][3], org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE));

			if (i != c.length-1)
				grupoSequencial.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED);
		}
		grupoSequencial.addContainerGap((int)rp.scpFiltro.getSize().getHeight(), Short.MAX_VALUE);

		pnlFiltroLayout.setVerticalGroup(
				pnlFiltroLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
				.add(grupoSequencial)
		);

		rp.scpFiltro.setViewportView(rp.pnlFiltro);
		//
		
		c = null;
	}

Adapte de acordo com o que vc precisa. Na verdade oque vc precisa é mais simples do que o que eu faço ai...

Boa sorte!

T
RenataFA

seuContainer.remove(oComponentQueQuerRemover);

Se precisar procurar qual vai remover, temos o seuContainer.getComponents() que retorna um Component[] que vc pode percorrer até encontrar o que deseja.

Criado 11 de fevereiro de 2011
Ultima resposta 22 de fev. de 2011
Respostas 7
Participantes 2