Como chamar método void dentro de um .add() de um JPanel

Tenho a classe Perfil.java que tem o trecho de código abaixo. Esse trecho é um JPanel que faz parte do conjunto de 3 abas. Tenho que inserir mais labels e textfield e pra não colocar todos eles manualmente fui aconselha a usar o método do 2º código. O que não consigo entender é como que vou chamar o método do 2º código dentro de um panel3.add(), já que isso não é possível. Obrigada.

[code]public void initComponent() {
    setSize(850, 550);
    setTitle("Perfil");

    final DAOGenerico<Pessoa> daoPessoa = new DAOGenerico<Pessoa>(Pessoa.class);
    final DAOGenerico<Pais> daoPais = new DAOGenerico<Pais>(Pais.class);
    final DAOGenerico<Estado> daoEstado = new DAOGenerico<Estado>(Estado.class);

    Pessoa pessoa = daoPessoa.obter(idE);

    Container cp = new Container();
    cp = getContentPane();
    cp.setLayout(new BorderLayout());

// Aba 3 configuracoes

   JPanel panel3 = new JPanel();
    GridBagConstraints cons = new GridBagConstraints();
    GridBagLayout layout = new GridBagLayout();
    panel3.setLayout(layout);

    cons.fill = GridBagConstraints.BOTH;
    cons.insets = new Insets(5, 0, 5, 0);
    cons.ipadx = 20;
    cons.ipady = 1;

    JLabel labelNome = new JLabel("Nome:");
    JTextField tfNome = new JTextField(25);

    JLabel labelEmail = new JLabel("Email:");
    JTextField tfdEmail = new JTextField(25);

    tabbedPane.addTab("Configuracoes", null, panel3, "Third Panel");

    painelSul.add(tabbedPane);
    setVisible(true);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setLocationRelativeTo(null);

    cp.add(painelSul, BorderLayout.CENTER);
}

[/code]

2º CÓDIGO

[code] public void add(String label, JComponent componente, String label2, JComponent componente2) {
GridBagConstraints cons = new GridBagConstraints();
cons.fill = GridBagConstraints.BOTH;
cons.insets = new Insets(4, 4, 4, 4);

    cons.fill = GridBagConstraints.NONE;
    cons.anchor = GridBagConstraints.NORTHWEST;
    cons.weightx = 0;
    cons.gridwidth = 1;
    this.getContentPane().add(new JLabel(label), cons);

    cons.weightx = 1;
    cons.gridwidth = 1;
    cons.fill = GridBagConstraints.BOTH;
    this.getContentPane().add(componente, cons);

    cons.fill = GridBagConstraints.NONE;
    cons.weightx = 0;
    cons.gridwidth = 1;
    this.getContentPane().add(new JLabel(label2), cons);

    cons.weightx = 1;
    cons.fill = GridBagConstraints.BOTH;
    cons.gridwidth = GridBagConstraints.REMAINDER;
    this.getContentPane().add(componente2, cons);
}[/code]

Nicolle KC no segundo código ele já adiciona o componente ao JPanel, não sendo mais preciso vc utilizar o método:

Para isso basta chamar o método na classe do Jpanel e vc deve passar como parâmetro o componente a ser adicionado ao panel. No segundo código ele adiciona através do método:

[code]

this.getContentPane().add(componente, cons); 
this.getContentPane().add(componente2, cons);[/code]

coloquei o add("Nome: ", tfNome, "Email: ", tfdEmail); depois que criei o tfdEmail no 1º código, porém agora todas as 3 abas sumiram ;x

Nicolle KC é necessário verificar se vc está adicionando o método ao Jpanel e não ao JTabbedPane, tendo em vista que vc falou que está utilizando abas.

Sendo assim vc deve adicionar os componentes ao Jpanel, e por fim add o Jpanel ao JTabbedPane.

se eu colocar this.add("Nome1: ", tfNome, "Email1: ", tfEmail); o java entende que o “this” é do panel3? Pq na linha 33 do 1º código o panel3 está sendo add no JTabbedPane então, penso eu, que o “add solto” seria do panel3. Sou iniciante então desculpa pela minha dificuldade em entender kkkk

Nicolle KC o this a classe em uso.

Se possível, coloca todo o código para que possa visualizar.

Aqui está o código inteiro. Pra não tirar do código comentei as abas 1 e 2 que tbm estão com problemas de layout (ignore elas), mas estou arrumando a aba 3 primeiro.

[code]package siteanime;

import Dao.DAOGenerico;
import entidades.Estado;
import entidades.Pais;
import entidades.Pessoa;
import java.awt.;
import javax.swing.
;

public class PerfilJava extends JFrame {

//Entrar é a tela de login
Entrar entrar = new Entrar();
int idE = entrar.getId();

public void initComponent() {
    setSize(850, 550);
    setTitle("Perfil");

    final DAOGenerico<Pessoa> daoPessoa = new DAOGenerico<Pessoa>(Pessoa.class);
    final DAOGenerico<Pais> daoPais = new DAOGenerico<Pais>(Pais.class);
    final DAOGenerico<Estado> daoEstado = new DAOGenerico<Estado>(Estado.class);

    Pessoa pessoa = daoPessoa.obter(idE);

    Container cp = new Container();
    cp = getContentPane();
    cp.setLayout(new BorderLayout());

    //Painel Norte 

    JPanel painelNorte = new JPanel();
    painelNorte.setLayout(new GridLayout(1, 2));

    //Painel Esquerdo
    JPanel painelEsq = new JPanel();
    painelEsq.setLayout(new FlowLayout());
    JLabel imagem1 = new JLabel();
    imagem1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Figuras/caveira.jpg")));
    painelEsq.add(imagem1);

    //Painel Direito
    JPanel painelDir = new JPanel();
    painelDir.setLayout(new GridLayout(2, 1));
    JLabel label2 = new JLabel("Bem Vindo Administadror " + pessoa.getNome() + ", " + pessoa.getEstadoIdEstado().getNome() + " - " + pessoa.getPaisIdPais().getNome());
    painelDir.add(label2);

    painelNorte.add(painelEsq, BorderLayout.WEST);
    painelNorte.add(painelDir, BorderLayout.EAST);

    painelNorte.setSize(200, 300);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setVisible(true);
    setLocationRelativeTo(null);

    cp.add(painelNorte, BorderLayout.NORTH);

    //Painel Sul
    JPanel painelSul = new JPanel();
    painelSul.setLayout(new FlowLayout());

    JTabbedPane tabbedPane = new JTabbedPane();

//// Aba 1: Controle de usuarios
// JPanel panel1 = new JPanel();
// panel1.setLayout(new GridLayout(7, 1));
// JLabel label4 = new JLabel(“Nome completo do contato:”);
// panel1.add(label4);
// JTextField textFieldNome = new JTextField(25);
// panel1.add(textFieldNome);
// JLabel label5 = new JLabel(“Tipo do contato:”);
// panel1.add(label5);
// JComboBox comboBoxStatus = new JComboBox(new String[]{“Ativo”, “Inativo”});
// comboBoxStatus.setPreferredSize(new Dimension(390, 20));
// panel1.add(comboBoxStatus);
// JLabel label = new JLabel(“Lista de Contatos:”);
// label.setPreferredSize(new Dimension(240, 20));
// panel1.add(label);
// JButton buttonProcurar = new JButton(“Procurar”);
// buttonProcurar.setPreferredSize(new Dimension(140, 25));
// panel1.add(buttonProcurar);
//
// tabbedPane.addTab(“Usuarios”, null, panel1, “First Panel”);
//
//// Aba 2: Albuns
//
// JPanel panel2 = new JPanel();
// panel2.setLayout(new GridLayout(3, 4, 5, 6));
// JLabel imagem11 = new JLabel();
// imagem11.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Figuras/caveira.jpg")));
// panel2.add(imagem11);
// JLabel imagem2 = new JLabel();
// imagem2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Figuras/caveira - Cópia.jpg")));
// panel2.add(imagem2);
// JLabel imagem3 = new JLabel();
// imagem3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Figuras/caveira - Cópia (2).jpg")));
// panel2.add(imagem3);
// JLabel imagem4 = new JLabel();
// imagem4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Figuras/caveira - Cópia (3).jpg")));
// panel2.add(imagem4);
// JLabel imagem5 = new JLabel();
// imagem5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Figuras/caveira - Cópia (4).jpg")));
// panel2.add(imagem5);
//
// tabbedPane.addTab(“Albuns”, null, panel2, “Second Panel”);

//Aba 3? configuracoes

    JPanel panel3 = new JPanel();
    panel3.setLayout(new GridLayout(9, 2));
    
    JLabel labelNome = new JLabel("Nome:");
    JTextField tfNome = new JTextField(25);

    JLabel labelEmail = new JLabel("Email:");
    JTextField tfEmail = new JTextField(25);
    
    add("Nome: ", tfNome, "Email: ", tfEmail); 
    
    tabbedPane.addTab("Configuracoes", null, panel3, "Third Panel");

    painelSul.add(tabbedPane);
    setVisible(true);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setLocationRelativeTo(null);

    cp.add(tabbedPane, BorderLayout.CENTER);
}

public void add(String label, JComponent componente, String label2, JComponent componente2) {
    GridBagConstraints cons = new GridBagConstraints();
    cons.fill = GridBagConstraints.BOTH;
    cons.insets = new Insets(4, 4, 4, 4);

    cons.fill = GridBagConstraints.NONE;
    cons.anchor = GridBagConstraints.NORTHWEST;
    cons.weightx = 0;
    cons.gridwidth = 1;
    this.getContentPane().add(new JLabel(label), cons);

    cons.weightx = 1;
    cons.gridwidth = 1;
    cons.fill = GridBagConstraints.BOTH;
    this.getContentPane().add(componente, cons);

    cons.fill = GridBagConstraints.NONE;
    cons.weightx = 0;
    cons.gridwidth = 1;
    this.getContentPane().add(new JLabel(label), cons);

    cons.weightx = 1;
    cons.fill = GridBagConstraints.BOTH;
    cons.gridwidth = GridBagConstraints.REMAINDER;
    this.getContentPane().add(componente2, cons);
}

    public PerfilJava() {
    initComponent();
}

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

}[/code]

Nicolle KC dei uma olhada no teu código.

Olha o this neste caso está se referenciado a classe principal estendida do Jframe. Porém desta forma vc estará adicionando os componentes ao JFrame e não ao Jpanel.

Para isto faça o seguinte, vc pode fazer algumas alterações no método add a fim de passar como um dos parâmetros um objeto do tipo Jpanel.

FIcando assim:

[code] public void add(String label, JComponent componente, String label2, JComponent componente2,JPanel panel) {
GridBagConstraints cons = new GridBagConstraints();
cons.fill = GridBagConstraints.BOTH;
cons.insets = new Insets(4, 4, 4, 4);

   cons.fill = GridBagConstraints.NONE;  
   cons.anchor = GridBagConstraints.NORTHWEST;  
   cons.weightx = 0;  
   cons.gridwidth = 1; 
   
   //Add componente ao Jpanel
   panel.add(new JLabel(label), cons);  

   cons.weightx = 1;  
   cons.gridwidth = 1;  
   cons.fill = GridBagConstraints.BOTH;  
  
   //Add componente ao Jpanel
   panel.add(componente, cons);  

   cons.fill = GridBagConstraints.NONE;  
   cons.weightx = 0;  
   cons.gridwidth = 1;  
   
   //Add componente ao Jpanel
   panel.add(new JLabel(label), cons);  

   cons.weightx = 1;  
   cons.fill = GridBagConstraints.BOTH;  
   cons.gridwidth = GridBagConstraints.REMAINDER;  

   //Add componente ao Jpanel
   panel.add(componente2, cons);  

} [/code]

muito obrigado urbgames, nunca tinha passaado pela minha cabeça de colocaro JPanel como paramentro kk agora o código funcionou perfeitamente (: