Remover painel de outro painel[resolvido]

2 respostas
P
ola, estou tentando remover um jpanel que crio ao selecionar um item de uma combo.A cada item q eu seleciono na combo eu tenho q apagar o painel q ja esta na tela e crio um novo painel mas nao esta funcionando =( o codigo para remover o painel antes de criar um novo é o seguinte :
Component[] components1 = painel.getComponents();
			for (Component component : components1) {
				if ( component instanceof JPanel ) {
					painelDosModulosBotoes.removeAll();
					painel.remove(painelDosModulosBotoes);
					System.out.println("removendo painel...");
					repaint();
				}
			
			}
após isto eu faço os outros codigos para criar o painel ah o painel q tem todos os elementos da tela chama-se painel e o q eu quero remover é o painelDosModulosBotoes. Obrigada

2 Respostas

thiagocg

Bom dia paty_trind, se vc ja sabe o nome do painel que vc quer remover não precisa iterar e remover todos os componentes do seu painel 'pai'.

Vamos la tente o seguinte:
//remove o painel botoes do painel que ele foi adicionado anteriormente
painelPai.remove(painelFilho);

//remove qualquer referecia a esse objeto anulando-o
painelFilho = null;

//repinta o painel 'pai'
painelPai.repaint();
painelPai.revalidade();

//Adiciona um novo painel
JPanel novoPanelFilho = new JPanel();
novoPainelFilho.setBounds(0,0,100,100); //seta posição e o tamanho do seu novo painelFilho
painelPai.add(novoPainelFilho); //adiciona o seu novo painel.

Creio q isto posso te ajudar.

[]'s

P
ola thiagocg, tentei utilizar o codigo que tu postaste mas da i ocorre o erro
java.lang.NullPointerException
	at java.awt.Container.remove(Unknown Source)
	at TelaDeInsercaoDeNotas.determinaBotao(TelaDeInsercaoDeNotas.java:891)
	at TelaDeInsercaoDeNotas$4.actionPerformed(TelaDeInsercaoDeNotas.java:269)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
dai se eu tiro a linha
painelFilho = null;
não ocorre erro mas o painel não é removido :( fiz o seguinte
botaoLimpar.addActionListener (new ActionListener (){  
			public void actionPerformed(ActionEvent e)
			{
				if(e.getSource()==botaoLimpar)
				{
					t0.setText("");
					t1.setText("");
					t2.setText("");
					t3.setText("");
					t4.setText("");
					t5.setText("");
					Component[] components = painel.getComponents();
					for (Component component : components) {
						if ( component instanceof JPanel ) {
							painel.remove(painelQueContemOsModulos);
							painel.repaint();
							
						}

					}
				}
			}});
ai consegui resolver!

muito obrigada pela ajuda!

Criado 23 de maio de 2011
Ultima resposta 24 de mai. de 2011
Respostas 2
Participantes 2