Como limpar um jpanel??
Limpar jpanel
14 Respostas
explique se melhor!
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.
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…
Já tentei utilizar esses métodos e nada deu certo :?
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("");
}
}
}
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…
do mesmo jeito q vc faz um add no jPanel vc pode fazer um remove passando qual o componente q deseja remover.
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.
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…
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!
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!
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
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.
tenta usar o metodopainel.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