Ir ao conteúdo
  • Cadastre-se
nanquinote

JButton não aparece em JPanel

Recommended Posts

Tenho um JFrame que tem 3 JPanels como atributos. Esses JPanels são classes separadas.

A ideia colocar um dos JPanels como contentPane de acordo com o botão pressionado.

 

Dá certo quando o JPanel está "vazio", mas quando eu tento adicionar botões nele não funciona. Podem ajudar?

 

Classe JFrame Tela:

package UI;

import java.awt.Dimension;
import java.awt.HeadlessException;
import javax.swing.JFrame;

public class Tela extends JFrame {
    
    private PainelInicial pnlIni;
    private PainelCadastro pnlCad;
    private PainelDados pnlDados;
    
    public Tela() throws HeadlessException {
        initTela();
       
        pnlIni = new PainelInicial();
        pnlCad = new PainelCadastro();
        pnlDados = new PainelDados();
        
        setContentPane(pnlIni);
    }
    
    private void initTela(){
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setPreferredSize(new Dimension(400, 480));
        setResizable(false);
        setLocation(490, 140);   
        //setLayout(null);
        //setContentPane(pnlIni); //painel default
        pack();
        setVisible(true);    
    }
    
    public void setPainelInicial(){
        this.setTitle("Início");
        this.setContentPane(pnlIni);
    }
    
    public void setPainelCadastro(){
        this.setTitle("Cadastro");
        this.setContentPane(pnlCad);
    }
    
    public void setPainelDados(){
        this.setTitle("Página de "); //TODO pegar nome do user logado
        this.setContentPane(pnlDados);
    }
}

Classe Panel Inicial:

 

package UI;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import net.miginfocom.swing.MigLayout;
public class PainelInicial extends JPanel{
    
    private JPanel sub;
    private JButton btCad;
    
    
    
    public PainelInicial() {
       //layout da classe + layout de cada sub painel
        //esse painel está minusculo
        //setLayout(null); NAO PODE SER NULL
        
        //setLayout(new BorderLayout());
        setBackground(Color.ORANGE);
        sub = new JPanel();
        sub.setBackground(Color.BLACK);
        sub.setPreferredSize(new Dimension(200, 200));
        //sub.setLayout(new BorderLayout());
        //btCad = new JButton("Prees me");
        //sub.add(btCad, BorderLayout.CENTER);
        
        
        this.add(sub, BorderLayout.CENTER);
        //this.add(btCad);
        
        
    }
    
    
}


 

Dá forma como está funciona, mas se descomentar o botão não roda mais (aparece só o frame, sem nenhum dos Panels)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consertei, os problemas eram:

 

Não setei o tamanhos dos JPanels

O .setVisible do JFrame deve ser colocado APÓS a adição dos componentes.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×