Mudar a interface dinamicamente

3 respostas
pdform

Eaê, galera!

Até hj, toda interface que construí foi “estática” por assim dizer… Ou seja, eu construía a interface toda e depois dava um “pack()” e tudo bem. O problema é que agora preciso alterar os componentes na tela e não estou conseguindo.

A exemplo, tenho um JPanel que vai receber um componente totalmente diferente a cada vez que eu alterar uma opção. Estou tentando o seguinte:

pVisualizacao.removeAll();
temp = new Component() //aqui eu crio o novo componente baseado nas opções
pVisualizacao.add(temp, BorderLayout.CENTER);

O que acontece é que a interface não é atualizada. Isso só acontece se, logo em seguida, eu chamar um “pack()” na janela ou quando eu redimensiono esse painel.

Chamar o “pack()” está fora de questão porque ele reseta todas as alterações na interface personalizadas pelo usuário e, além disso, pra quê redesenhar a janela inteira se eu só alterei um painel?

Qual método eu devo usar para forçar a atualização do meu JPanel? Eu tentei um “repaint()” mas simplesmente não funcionou.

Obrigado pela atenção!

3 Respostas

R

Fala Rapaz,

Esse é um problema bem comum, segue a receita:

//Remova os componentes do seu

pVisualizacao.setLayout(new java.awt.BorderLayout());

pVisualizacao.removeAll();
//Novo componente:

JFileChosser componteTemp = new JFileChosser(); //Por exemplo

componteTemp.setVisible(true);

//Adicionando

pVisualizacao.add(componteTemp);

pVisualizacao.repaint();

pVisualizacao.validate();

Sucessos! 8)

pdform

Vlw!

mchiareli

ou então tente um

Criado 4 de novembro de 2007
Ultima resposta 6 de nov. de 2007
Respostas 3
Participantes 3