.
.
.
.
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:
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):
[code] 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;
}
[/code]
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!
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.