Estou criando componentes em tempo de execução nao está aparecendo. [RESOLVIDO]

eu estou usando um panel como container e usando o revalidate e ainda assim não está aparecendo.

ButtonGroup grupo = new ButtonGroup();  
  
for (String caption : listaDeItens) {  
     JRadioButton button = new JRadioButton(caption);  
     grupo.add(button);  
  
     jPanel1.add(buttonn);  
}  
jPane1.revalidate();

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:

[code]import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

/**
*

  • @author David Buzatto
    */
    public class Janela extends JFrame {

    private JPanel container;
    private JButton botao;

    public Janela() {
    init();
    }

    public void init() {

     setTitle( "Foo" );
     setSize( 400, 400 );
     setDefaultCloseOperation( EXIT_ON_CLOSE );
     
     container = new JPanel();
     botao = new JButton( "Clique-me!" );
     
     add( container, BorderLayout.CENTER );
     add( botao, BorderLayout.SOUTH );
     
     botao.addActionListener( new ActionListener() {
    
         @Override
         public void actionPerformed( ActionEvent e ) {
             
             int quantidade = Integer.parseInt( 
                     JOptionPane.showInputDialog( "Entre com a quantidade:" ) );
             
             container.removeAll();
             
             for ( int i = 0; i < quantidade; i++ ) {
                 JLabel label = new JLabel( "Label " + ( i + 1 ) );
                 container.add( label );
             }
             
             container.doLayout();
             container.repaint();
             
         }
         
     });
    

    }

    public static void main( String[] args ) {
    new Janela().setVisible( true );
    }

}[/code]

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

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.

ButtonGroup bg = new ButtonGroup();

JRadioButton rdTeste = new JRaidoButton("teste");
bg.add(rdTeste);
jPanel1.add(rdTeste);
jPanel1.repaint();
jPanel1.revalidate();
jPanel1.setVisible(true);

isso tudo está no click de um button e ainda assim não consigo criar o radio button.

Oque pode estar acontecendo?

Consegui! faltava um “setLayout”.

Oi Algebra,

Só um detalhe. O gerenciador de layout padrão da classe JPanel é o FlowLayout. Não sei qual vc está usando, mas se deu certo, ótimo :wink:

[]'s