Use o método doLayout do container para forçar a execução do algoritmo do gerenciador de layout e o método repaint para forçar a repintura do container.
Exemplo:
importjava.awt.BorderLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.*;/** * * @author David Buzatto */publicclassJanelaextendsJFrame{privateJPanelcontainer;privateJButtonbotao;publicJanela(){init();}publicvoidinit(){setTitle("Foo");setSize(400,400);setDefaultCloseOperation(EXIT_ON_CLOSE);container=newJPanel();botao=newJButton("Clique-me!");add(container,BorderLayout.CENTER);add(botao,BorderLayout.SOUTH);botao.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){intquantidade=Integer.parseInt(JOptionPane.showInputDialog("Entre com a quantidade:"));container.removeAll();for(inti=0;i<quantidade;i++){JLabellabel=newJLabel("Label "+(i+1));container.add(label);}container.doLayout();container.repaint();}});}publicstaticvoidmain(String[]args){newJanela().setVisible(true);}}
D
davidbuzatto
Acabei de consultar a documentação. Lá é dito para não usar o método doLayout, mas sim o validate (java.awt.Component) ou o revalidate (java.swing.JComponent) da forma que você está usando. Sendo assim, o que falta no seu código é o repaint.
[]'s
A
Algebra
david eu estou usando o NetBeans 6.8, tentando todo tipo de comando e não estou conseguindo inserir um radiobutton na tela em tempo de execução.
estou dando repaint, revalidate, setvisible no container e não está dando certo.