Problema repaint() JPanel

4 respostas
bombbr

Estou desenvolvendo uma pequena aplicação utilizando Swing porém estou encontrando um problema na atualização dos Paineis (JPanel) em uma tela da aplicação…
Esta tela é composta de um JSplitPane um JTree e um JPanel que contém outros painéis.
O comportamento esperado desta tela, é que quando selecionada uma opção no JTree os painéis contidos em JPanel variem…
Isto esta ocorrendo porém os componentes destes painéis so aparecem quando maximizo a tela ou redimenciono o JSplitPane…inicialmente a tela fica em branco…
Alguém teria alguma dica…já forcei um repaint no Jpanel e não adiantou…
Abaixo um trecho do código…

//Criação dos componentes

jSplitPane1.setLeftComponent(jTree);

jSplitPane1.setRightComponent(jPanel1);

getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER);
//Quando selecionada uma opção no JTree

jPanel1.removeAll();

jPanel1.add(outroJPanel);  // outroJPanel contém outros compontes swing como JButton, label, etc.

jPanel1.repaint();

//Após a execução deste código o jPanel1 fica e branco…só mostrando o outroJPanel quando

maximizo a tela ou redimenciono o JSplitPane

Grato

4 Respostas

F

Olá,

Este é o caso de usar o CardLayout, muito mais elegante do que ficar dando repaint.
O teu código ficaria mais ou menos assim.

//Criacao do painel com o CardLayout que irá conter os outros paineis.
JPanel cardPanel = new JPanel(new CardLayout());
cardPanel.add(panel1, "PAINEL_1");
cardPanel.add(panel2, "PAINEL_2";
...
//Adicionando ele no Split.
jSplitPane1.setLeftComponent(jTree);
jSplitPane1.setRightComponent(cardPanel);
getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER);

//Quando selecionada uma opção no JTree
cardPanel.show("PAINEL_1");

Seria mais ou menos isso, só adptando pro teu codigo.

]['s

luiz_ross
após o repaint() use o método revalidate() que funciona
Thiago_Senna

Experimenta usar o método

seuObjetoSwing.updateUI();

Talvez funcione!

Um Abraço!

bombbr

fabgp2001: Valeu pela dica, minhas próximas telas vou codifica-las utilizando CardLayout…

luiz_ross: Valeu funcionou perfeitamente…

Thiago Senna: Valeu funcionou perfeitamente…

Criado 20 de fevereiro de 2005
Ultima resposta 22 de fev. de 2005
Respostas 4
Participantes 4