Pessoal, dúvida cruel:
precisamos, em uma aplicação, alterar um componente da interface em tempo de execução. Por exemplo, quando abrir um arquivo, abrir, no centro da tela, um painel para exibir esse arquivo.
O problema é que, mesmo inserindo o componente e chamando revalidate, validate, pack, repaint, paintImmediatly, o troço não aparece de jeito nenhum!!!
Aí estão os fragmentos de código interessantes para o problema:
No construtor:
left_center_split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
left_center_split.setOneTouchExpandable(true);
left_center_split.add(navigation_view);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(toolbar,BorderLayout.PAGE_START);
getContentPane().add(left_center_split,BorderLayout.CENTER);
getContentPane().add(status,BorderLayout.SOUTH);
Para mostrar o novo painel:
public void setCenter(UIView view) {
if (center_view != null)
left_center_split.remove(center_view);
left_center_split.setRightComponent(view);
if (center_view == null)
getContentPane().add(left_center_split,BorderLayout.CENTER);
center_view = view;
validate();
}
O novo painel (view) não aparece…no debug é possível verificar que seu tamanho é (0,0), mas, mesmo dando um setSize para uma dimensão qualquer, o painel não aparece… ah é, e já testamos sem SplitPane também…mesma coisa!
socorro! :shock:
[]'s

