Limpar jpanel

14 respostas
Mara1

Como limpar um jpanel??

14 Respostas

RiQuInHo_

explique se melhor!

R

tenta usar o metodo painel.repaint() depois, é sempre bom. Caso não funcione,
use os metodos
removeAll() ou remove(Component comp) passando o componente que você quer remover como parâmetro…
Depois q vc remover e adicionar o q vc quer, usa o método “validate()” no JPanel.

Espero ter ajudado.

Mara1

Tenho vários textfields e labels dentro de um painel, e um botão q ao ser selecionado vai para outra tela, então quando eu volto a tela do painel para inserir novas informações as de antes aparecem também…preciso limpar o painel ao sair dessa tela…

Mara1

Já tentei utilizar esses métodos e nada deu certo :?

RiQuInHo_

public void limpaComponentes(JPanel obj){ Component[] comps[] = obj.getComponents(); // retorna todos os componentes do JPanel for (int i = 0; i < comps.length; i++) { if (comps[i] instanceof JTextField) { // verifica se é um JTextField ((comps[i]) JTextField).setText(""); } } }

Mara1

Mas eu quero realmente apagar o que tiver no painel, não apenas limpar…pois os textfields e os labels são criados de acordo com a necesidade do usuario…

panthovillas

do mesmo jeito q vc faz um add no jPanel vc pode fazer um remove passando qual o componente q deseja remover.

ViniGodoy

A princípio, você jamais precisaria usar o repaint.

Quando fechar sua tela, dê dispose nela. Para abri-la novamente, recrie-a com o new.

P

Olá,

eu não sei se entendi bem o teu problema, mas vamos lá…
Quando tu tem um painel e usa .removeAll(), o método retirará todos os componentes adicionados nele. Desta forma você precisará adicionar todos os componentes novamente.
Não sei se isto seria adequado, pois se eu entendi bem você teria que fazer isto várias vezes dependendo do que o usuário escolhesse…
A ideia que o ViniGodoy sugeriu funcionará vamos meio que dizer melhor, pois você destruirá a tela e por parâmetros no método de criação de tela você conseguiria controlar o que aparecerá na tela…
Não precisando assim, ficar removendo e colocando componentes toda hora…

espero ter ajudado…

Vingdel

Mara*, boa noite!

Caso queira mesmo limpar o JPanel em vez de fazer como o Vini sugeriu, tente o seguinte:jPanel.removeAll(); jPanel.validate();Veja se dá certo.

Abraço!

Mara1

Já estou usando o dispose e o new…e mesmo assim os campos antigos aparecem…

e Vingdel tentei isso também e não deu certo!

Vingdel

Bom dia, Mara*!

A meu ver o dispose não funciona pois quando faz um new você abre uma nova janela identica a que você destruiu com o dispose. Você teria que fazer o new em uma janela com os novos componentes que você quer.

Para ficar mais fácil, poste o trecho de código do botão de saíde e o de retorno a tela que você quer limpar.

Abraço

R

Olá,
Já aconteceu de eu ter que alternar alguns painéis mas não obtinha o resultado esperado pois eu estava apenas alternando os painéis mas não estava zerando seus componentes internos.
Tente fazer um metodo de reset

public void reset() { textField1 = setText(""); . . . textFieldn = setText(""); }

Esse exemplo limpa apenas os campos de texto. è claro que vc precisa resetar todos os componentes e variáveis relacionadas.
Então insira o método antes de vc chamar novamente o painel. Ele deverá estar limpo.

J

RenataTorres:
tenta usar o metodo painel.repaint() depois, é sempre bom. Caso não funcione,
use os metodos
removeAll() ou remove(Component comp) passando o componente que você quer remover como parâmetro…
Depois q vc remover e adicionar o q vc quer, usa o método “validate()” no JPanel.

Espero ter ajudado.

Estava na mesma situação e consegui.

obrigado

Criado 18 de janeiro de 2012
Ultima resposta 8 de mai. de 2013
Respostas 14
Participantes 9