Sobre o método "getContentPane()"

Oi denovo gente, na gigantesca classe abaixo (desculpa, é que achei que ver a classe toda seria mais esclarecedor…), porque colocar “f.getContentPane().add(pl)” (linha 81), ao invés de só “f.add(pl)” ?

Muito obrigada gente, vcs tem ajudado muito :slight_smile:

package exemplos;

import javax.swing.*;

import java.awt.event.*;

public class Frm05 implements ActionListener, KeyListener {
	
	JFrame f = new JFrame();
	JPanel pl = new JPanel(); 
	JLabel lblIdCategoria = new JLabel("Código:");
	JTextField txtIdCategoria = new JTextField("");
	JLabel lblCategoria = new JLabel("Categoria");
	JTextField txtCategoria = new JTextField("");
	JButton cmdAlterar = new JButton("Alterar");
	JButton cmdIncluir = new JButton("Incluir");
	JButton cmdExcluir = new JButton("Excluir");
	JLabel lblStatus = new JLabel("Status:");
	
	//Adicionando menus:
	JMenuBar mnuBarra = new JMenuBar();
	JMenu mnuArquivo = new JMenu("Arquivo");
	JMenu mnuEditar = new JMenu("Editar");
	JMenuItem mnuSair = new JMenuItem ("Sair");
	JMenuItem mnuAlterar = new JMenuItem ("Alterar");
	JMenuItem mnuExcluir = new JMenuItem ("Excluir");
	JMenuItem mnuIncluir = new JMenuItem ("Incluir");
	JMenuItem mnuBuscar = new JMenuItem ("Buscar");
	
	void criarTela(){
		
		//Configurações da tela:
		f.setSize(300, 185);
		f.setLocation(150, 200);
		f.setTitle("Cadastro de categorias");
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
		pl.setLayout(null);
		
		//Posição dos objetos na tela:
		lblIdCategoria.setBounds(10, 10, 60, 20); // (x, y, width, height)
		txtIdCategoria.setBounds(100, 10, 60, 20); 
		lblCategoria.setBounds(10, 40, 60, 20); 
		txtCategoria.setBounds(100, 40, 170, 20); 
		cmdAlterar.setBounds(10, 70, 80, 20); 
		cmdIncluir.setBounds(100, 70, 80, 20); 
		cmdExcluir.setBounds(190, 70, 80, 20); 
		lblStatus.setBounds(10, 100, 180, 20); 
		
		//Adicionando manipuladores de eventos:
		cmdAlterar.addActionListener(this);
		cmdIncluir.addActionListener(this);
		cmdExcluir.addActionListener(this);
		txtIdCategoria.addKeyListener(this);
		
		//Adicionando os objetos ao painel:
		pl.add(lblIdCategoria);
		pl.add(txtIdCategoria);
		pl.add(lblCategoria);
		pl.add(txtCategoria);
		pl.add(cmdAlterar);
		pl.add(cmdIncluir);
		pl.add(cmdExcluir);
		pl.add(lblStatus);
		
		//Menus
		mnuBarra.add(mnuArquivo);
		mnuBarra.add(mnuEditar);
		mnuArquivo.add(mnuSair);
		mnuEditar.add(mnuAlterar);
		mnuEditar.add(mnuIncluir);
		mnuEditar.add(mnuExcluir);
		mnuEditar.add(new JSeparator());
		mnuEditar.add(mnuBuscar);
		mnuSair.addActionListener(this);
		mnuAlterar.addActionListener(this);
		mnuIncluir.addActionListener(this);
		mnuExcluir.addActionListener(this);
		mnuBuscar.addActionListener(this);
		f.setJMenuBar(mnuBarra);
		//Adicionando o painel ao formulário
		f.getContentPane().add(pl);
		f.setVisible(true);
		
	}
	
	public void actionPerformed(ActionEvent e){
		Object o = e.getSource();
		if((o == cmdAlterar) || (o == mnuAlterar)){
			alterar();
		}
		if((o == cmdIncluir) || (o == mnuIncluir)){
			incluir();
		}
		if((o == cmdExcluir) || (o == mnuExcluir)){
			excluir();
		}
		if(o == mnuBuscar){
			buscar();
		}
		if(o == mnuSair){
			txtCategoria.setText("Menu sair");
			System.exit(0);
		}
	}
	
	void alterar(){
		lblStatus.setText("Alterar");
	}
	
	void incluir(){
		lblStatus.setText("Incluir");
	}
	
	void excluir(){
		lblStatus.setText("Excluir");
	}
	
	void buscar(){
		lblStatus.setText("Buscar");
	}
	
	public void keyTyped(KeyEvent e){
		char tecla = e.getKeyChar();
		lblStatus.setText("Tecla: " + tecla);
	}
	
	public void keyPressed(KeyEvent e){
		int tecla = e.getKeyCode();
		if(tecla == KeyEvent.VK_F10){
			JOptionPane.showMessageDialog(f, "Tecla F10 pressionada");
		}
	}
	
	public void keyReleased(KeyEvent e){
		
	}
	
}

O getContentPane() serve para retornar o painel principal da JPanel.