JLabel, JTextField e JButton não aparecem

Estou fazendo uma janela para recebimento de dados, mas os elementos como JLabel, JTextField e JButton não estão aparecendo. O que devo fazer?

import javax.swing.JDialog;
import javax.swing.*;

import java.awt.*;

public class tela_01 extends JDialog {

		public JLabel lbl_pessoa, lbl_palestra;
		public JButton bt_visualiza, bt_cancela;
		public JTextField txt_pessoa, txt_palestra;
	
	public void t_01() {
		tela_01 emitirCert = new tela_01();
		emitirCert.setTitle("Digitar dados");
		emitirCert.setSize(550,350);
		emitirCert.setResizable(false);
		emitirCert.setModal(true);
		emitirCert.alignCenter();
		emitirCert.setVisible(true);
		emitirCert.getContentPane().setLayout(null);
		
		lbl_pessoa = new JLabel("Nome participante:");
		lbl_pessoa.setBounds(10,70,70,20);
        emitirCert.getContentPane().add(lbl_pessoa);
        
        lbl_palestra = new JLabel("Nome palestra:");
		lbl_palestra.setBounds(40,70,70,20);
        emitirCert.getContentPane().add(lbl_palestra);
		
		txt_pessoa = new JTextField("");
		txt_pessoa.setBounds(10,160,70,20);
		txt_pessoa.setVisible(true);
        emitirCert.getContentPane().add(txt_pessoa);
        
        txt_palestra = new JTextField("");
		txt_palestra.setBounds(40,160,70,20);
        emitirCert.getContentPane().add(txt_palestra);
        
        bt_visualiza = new JButton("Visualizar");
        bt_visualiza.setBounds(250,330,140,20);
        bt_visualiza.setEnabled(false);
        
        bt_cancela = new JButton("Visualizar");
        bt_cancela.setBounds(250,330,140,20);
        bt_cancela.setEnabled(false);
        
	}
    
    public void alignCenter() {
        Dimension t = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension j = getSize();
        setLocation((t.width-j.width)/2,(t.height-j.height)/2);
    }
}

Obrigado

Coloque o “setVisible(true);” após ter adicionado tudo ao JFrame.
Recomendo que faça a “montagem” da tela em um método separado, e de um outro chame este método e após o setVisible(true);

Abraços,

Marcos A. C. Jordão’’

Bem raci0nal, acho que eu fiz mais ou menos o que você falou, mas não funcionou. Vou postar o programinha todo para você ver.

tela_prinicpal

import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class tela_principal extends JFrame implements ActionListener {
	
	public JMenuBar barra = null;
	public JMenu menu01 = null;
	public JMenuItem item01, item02 = null;
	
	public tela_principal() {
		super();
		iniciar();
	}
	
	public void iniciar(){
		this.setTitle("Programa");  
        this.setJMenuBar(getbarraMenu());  
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);  
        this.setSize(800,800);  
        this.setVisible(true);
	}
	
	private JMenuBar getbarraMenu() {  
        if (barra == null){  
            barra = new JMenuBar();  
            barra.add(getmenuArquivo());  
        }  
        return barra;
        }
        
        private JMenu getmenuArquivo() {  
            if (menu01 == null){  
                menu01 = new JMenu();  
                menu01.setText("Arquivo");  
                menu01.add(getitemMenu());
                menu01.addSeparator();
                menu01.add(getitemMenu2());
            }  
             return menu01;  
         }
        
        private JMenuItem getitemMenu() {  
            if (item01 == null){  
                item01 = new JMenuItem();  
                item01.setText("Novo");
                item01.addActionListener(this);
            }  
            return item01;  
        }
        
        private JMenuItem getitemMenu2() {  
            if (item02 == null){  
                item02 = new JMenuItem();  
                item02.setText("Sair");
                item02.addActionListener(this);
            }  
            return item02;  
        }
        
        public void actionPerformed(ActionEvent e) {
            
            if(e.getSource() == item02) {
               System.exit(0);
            }
            
            if(e.getSource() == item01) {
               tela_01  emitirCert = new tela_01();
               emitirCert.t_01();
            }
        }
    
	public static void main(String[] args) {
		new tela_principal();

	}

}

tela_01 (aonde está o problema)

import javax.swing.JDialog;
import javax.swing.*;

import java.awt.*;

public class tela_01 extends JDialog {

		public JLabel lbl_pessoa, lbl_palestra;
		public JButton bt_visualiza, bt_cancela;
		public JTextField txt_pessoa, txt_palestra;
	
	public void t_01() {
		tela_01 emitirCert = new tela_01();
		emitirCert.setTitle("Digitar dados");
		emitirCert.setSize(550,350);
		emitirCert.setResizable(false);
		emitirCert.setModal(true);
		emitirCert.alignCenter();
		emitirCert.setVisible(true);
		emitirCert.getContentPane().setLayout(null);
		
		lbl_pessoa = new JLabel("Nome participante:");
		lbl_pessoa.setBounds(10,70,70,20);
		lbl_pessoa.setVisible(true);
        emitirCert.getContentPane().add(lbl_pessoa);
        
        lbl_palestra = new JLabel("Nome palestra:");
		lbl_palestra.setBounds(40,70,70,20);
		lbl_palestra.setVisible(true);
        emitirCert.getContentPane().add(lbl_palestra);
		
		txt_pessoa = new JTextField("");
		txt_pessoa.setBounds(10,160,70,20);
		txt_pessoa.setVisible(true);
        emitirCert.getContentPane().add(txt_pessoa);
        
        txt_palestra = new JTextField("");
		txt_palestra.setBounds(40,160,70,20);
		txt_palestra.setVisible(true);
        emitirCert.getContentPane().add(txt_palestra);
        
        bt_visualiza = new JButton("Visualizar");
        bt_visualiza.setBounds(250,330,140,20);
        bt_cancela.setVisible(true);
        bt_visualiza.setEnabled(false);
        
        bt_cancela = new JButton("Visualizar");
        bt_cancela.setBounds(250,330,140,20);
        bt_cancela.setVisible(true);
        bt_cancela.setEnabled(false);
        
	}
    
    public void alignCenter() {
        Dimension t = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension j = getSize();
        setLocation((t.width-j.width)/2,(t.height-j.height)/2);
    }
}

obs.: eu coloquei o “setVisible” nos outros componentes também.

Obrigado pela ajuda até o momento.

Testei aqui e realmente o problema é a ordem de execução do “setVisible(true)” do JDialog.
Deixe o método t_01 assim:

[code] public void t_01() {
tela_01 emitirCert = new tela_01();
emitirCert.setTitle(“Digitar dados”);
emitirCert.setSize(550,350);
emitirCert.setResizable(false);
emitirCert.setModal(true);
emitirCert.getContentPane().setLayout(null);

	lbl_pessoa = new JLabel("Nome participante:");
	lbl_pessoa.setBounds(10,70,70,20);
            emitirCert.getContentPane().add(lbl_pessoa);
    
            lbl_palestra = new JLabel("Nome palestra:");
	lbl_palestra.setBounds(40,70,70,20);
            emitirCert.getContentPane().add(lbl_palestra);
	
	txt_pessoa = new JTextField("");
	txt_pessoa.setBounds(10,160,70,20);
            emitirCert.getContentPane().add(txt_pessoa);
    
            txt_palestra = new JTextField("");
	txt_palestra.setBounds(40,160,70,20);
            emitirCert.getContentPane().add(txt_palestra);
    
            bt_visualiza = new JButton("Visualizar");
            bt_visualiza.setBounds(250,330,140,20);
            bt_visualiza.setEnabled(false);

            bt_cancela = new JButton("Visualizar");
            bt_cancela.setBounds(250,330,140,20);
            bt_cancela.setEnabled(false);
            
	emitirCert.alignCenter();
            emitirCert.setVisible(true);
}[/code]

Note que o “setVisible(true)” deve ser executado após todos os componentes já estarem no container senão eles não aparecem.
Se por um acaso você for adicionar outros componentes posteriormente, terá que atualizar a tela para que aparecem, entendeu a lógica?

Se me permite dar alguns “palpites”:

  • Crie um método separado para colocar os componentes no seu container.

  • Chame este método dentro de um construtor da sua classe.

  • Após este método execute o setVisible(true) e seu método de centralizar.
    Com o uso do construtor você evita que na sua outra janela tenha que chamar o método para desenhar a tela, apenas precisa instanciá-la.

  • Você não precisa dar setVisible em todos os componentes, só na janela mesmo.

  • Para centralizar uma janela, o método: “emitirCert.setLocationRelativeTo(null)” é mais simples.

  • Eu sei que isso é muito particular, mas em alguns pontos o nome de seus objetos e métodos não parecem muito intuitivos… tente seguir o padrão, por exemplo: “TelaPrincipal”

  • Não gosto do NullLayout, mas isso é gosto próprio rs

Abraços,

Marcos A. C. Jordão’’

Vc esqueceu de colocar o add do botao…tenta esse codigo ai teste aqui e deu certo…

public void t_01() {
			Tela_01 emitirCert = new Tela_01();
			emitirCert.setTitle("Digitar dados");
			emitirCert.setSize(500,300);
			emitirCert.setResizable(false);
			emitirCert.setModal(true);
			emitirCert.getContentPane().setLayout(null);
			
			lbl_pessoa = new JLabel("Nome participante:");
			lbl_pessoa.setBounds(5,15,140,20);
	                emitirCert.getContentPane().add(lbl_pessoa);
	        
	        lbl_palestra = new JLabel("Nome palestra:");
			lbl_palestra.setBounds(5,40,140,20);
	                emitirCert.getContentPane().add(lbl_palestra);
			
			txt_pessoa = new JTextField("");
			txt_pessoa.setBounds(120,15,100,20);
	                emitirCert.getContentPane().add(txt_pessoa);
	        
	        txt_palestra = new JTextField("");
			txt_palestra.setBounds(120,40,100,20);
	                emitirCert.getContentPane().add(txt_palestra);
	        
	        bt_visualiza = new JButton("Visualizar");
	        bt_visualiza.setBounds(10,80,100,30);
	                bt_visualiza.setEnabled(true);

	        bt_cancela = new JButton("Visualizar");
	        bt_cancela.setBounds(10,120,100,30);
	                bt_cancela.setEnabled(true);
	        
	        emitirCert.getContentPane().add(bt_visualiza);
	        emitirCert.getContentPane().add(bt_cancela);
			emitirCert.alignCenter();
	                emitirCert.setVisible(true);
		}

Abracos

Verdade, esqueci de citar esse outro detalhe.

Falow

Muito obrigado mariofcc e raci0nal. Com a juda de vocês eu consegui resolver o problema qe estava me atrapalhando. Mutio obrigado pela ajuda prestada até o momento.