Em interfaces gráficas de usuário (GUI), uma interface tabulada ou um Tab Control é um widget que permite a interação de vários documentos ou painéis para ser contido dentro de uma única janela, usando guias como um widget de navegação para alternar entre conjuntos de painéis.
JTabbedPane
Guias/ componentes são adicionados a um objeto JTabbedPane usando os métodos e AddTab ou insertTab. Uma aba é representada por um índice correspondente à posição em que foi adicionado em, em que a primeira guia tem um índice igual a 0 e a última aba tem um índice igual à contagem de guia menos 1.
Exemplo:
Neste exemplo criamos um painel tabulado com 3 guias onde na primeira e na segunda guia o usuário entrará com um numero inteiro e na terceira guia sobre o evento StateChange efetuaremos a soma dos números escolhidos.
Java
import java.awt.BorderLayout; import java.awt.Container; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.JTextField; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class TabControl implements ChangeListener { // Declara componentes JLabel rotulo1; JLabel rotulo2; JLabel rotulo3; JPanel painel1; JPanel painel2; JPanel painel3; JTabbedPane abas; JTextField numero1; JTextField numero2; JLabel total; public Container criaPainel() { // Cria painel do formulario JPanel painel = new JPanel(new GridLayout(1,1)); // Cria componentes rotulo1 = new JLabel("Escolha o primero numero inteiro:"); rotulo2 = new JLabel("Escolha o segundo numero inteiro:"); rotulo3 = new JLabel("Total da soma:"); numero1 = new JTextField(); numero2 = new JTextField(); total = new JLabel("0"); // Cria painel para a primeira aba painel1 = new JPanel(new BorderLayout()); painel1.add(rotulo1, BorderLayout.PAGE_START); painel1.add(numero1, BorderLayout.CENTER); // Cria painel para a segunda aba painel2 = new JPanel(new BorderLayout()); painel2.add(rotulo2, BorderLayout.PAGE_START); painel2.add(numero2, BorderLayout.CENTER); // Cria painel para a terceira aba painel3 = new JPanel(new BorderLayout()); painel3.add(rotulo3, BorderLayout.PAGE_START); painel3.add(total, BorderLayout.CENTER); // Cria abas abas = new JTabbedPane(); // Adiciona paineis nas abas abas.addTab("Numeros 1", painel1); abas.addTab("Numeros 2", painel2); abas.addTab("Total", painel3); // Cria evento para as abas abas.addChangeListener(this); // Adiciona abas ao painel do formulario painel.add(abas); // Retorna painel principal return painel; } public void stateChanged(ChangeEvent arg0) { // Escolha indice da aba if (abas.getSelectedIndex() == 2) { // Efetua calculo int soma = Integer.parseInt(numero1.getText()) + Integer.parseInt(numero2.getText()); total.setText( Integer.toString(soma)); } } // Cria GUI public static void criaGUI() { // Cria formulario principal JFrame formulario = new JFrame("DA - Tabbed Panes"); formulario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Cria instancia da classe TabControl pass = new TabControl(); // Adiciona painel principal formulario.setContentPane(pass.criaPainel()); formulario.setSize(300,110); formulario.setVisible(true); } // Cria formulario public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { @Override public void run() { criaGUI(); } }); } }