Crear pestañas con java utilizando la clase JTabbedPane brinda mejor aspecto a las interfaces. Ademas, crea un diseño amigable en cuanto a usabilidad.

Ofrece múltiples ventajas, pues para crear (agregar) pestañas recibe por parámetro objetos Component lo cual incrementa posibilidades de agregar múltiples elementos. Por ejemplo: usted podrá agregar distintos paneles y dentro de los paneles agregar mas elementos que conformen formularios, entre otros. Ademas, ofrece gran facilidad de implementación.

Para comenzar a crear nuestras primeras pestañas, como de costumbre primero debemos crear nuestra ventana (marco) con un panel.

package paneles;

import javax.swing.*;

public class Paneles {

    public static void main(String[] args) {
        JFrame f = new JFrame("Ventana con Pestañas y paneles");
        f.add(new PanelMezclado());
        f.setSize(500, 400);
        f.setLocation(150, 100);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }

}

Ahora crearemos la instancia a la clase JTabbedPane y agregaremos pestañas con diferentes componentes. Realmente es fácil implementar pestañas y se logra haciéndolo con el siguiente código:

        //Panel con etiquetas
        JTabbedPane pVista = new JTabbedPane();
        add(pVista, BorderLayout.CENTER);//Agregamos al panel nuestro objeto JTabbedPane
        pVista.addTab("Panel con malla", addPanelConMalla());
        pVista.addTab("Panel con bordes", addPanelConBorder());
        pVista.addTab("Mezcla de paneles", addMezclaPaneles());

Para una implementación sencilla, basta con utilizar el método addTab(). Y este tiene una sobre carga de métodos, algunos ofrecen la posibilidad de agregar un icono a la pestaña. Sin embargo, el utilizado en el código permite agregar un texto a la pestaña y obviamente el contenido.

Los objetos Comoponent pasados por parámetro son:

    private Component addPanelConMalla() {
        JPanel panel = new JPanel();
        GridLayout grid = new GridLayout(2, 2);
        panel.setLayout(grid);
        JButton boton1 = new JButton("Primer Botón");
        JButton boton2 = new JButton("Último Botón");
        panel.add(boton1);
        panel.add(new JButton("Otro Botón"));
        panel.add(boton2);
        return panel;
    }

Este método y los demás son de tipo Component, con el código anterior utilizamos el administrador de diseño GridLayout y se agregamos tres botones.

    private Component addPanelConBorder() {
        JPanel panel = new JPanel();
        BorderLayout layout = new BorderLayout();
        panel.setLayout(layout); //<=Asignar el Layout
        panel.add(new JButton("Norte"), "North");
        panel.add(new JButton("Sur"), "South");
        panel.add(new JButton("Este"), "East");
        panel.add(new JButton("Oeste"), "West");
        panel.add(new JButton("Centro"), "Center");
        return panel;
    }

Ahora hacemos uso de BorderLayout y agregamos varios botones, podrás notar que existe la posibilidad de crear pestañas con diferentes componentes cada una.

    private Component addMezclaPaneles() {
        JPanel panel = new JPanel();
        BorderLayout layout = new BorderLayout();
        panel.setLayout(layout);

        JPanel panelNorte = new JPanel();
        panelNorte.setBackground(Color.GRAY);
        panelNorte.setBorder(BorderFactory.
                createLineBorder(Color.BLACK, 5));
        panel.add(panelNorte, BorderLayout.NORTH);
        panelNorte.add(new JButton("Aceptar"));
        panelNorte.add(new JButton("Cancelar"));
        panel.add(new JButton("Botón"), "Center");

        return panel;
    }

Finalmente usamos el mismo administrador de diseño que el código anterior, pero agregamos botones y un border dando un aspecto diferente.

Como podrás notar, este tipo de pestañas da mejor aspecto y utilidad a nuestras aplicaciones. Ademas, el método utilizado para lograr este funcionamiento solamente es uno. Sin embargo, si deseas agregar funciones extras recomiendo visitar el API de JAVA (pues solo mencione el método necesario para lograr esta función).