Em computação e telecomunicações, um menu é uma lista de opções ou comandos apresentados a um operador por um computador ou sistema de comunicações . Os menus são, por vezes, hierarquicamente organizado, permitindo uma navegação através de diferentes níveis da estrutura do menu. A seleção de um item do menu com uma seta irá expandi-lo, mostrando um segundo menu (o sub-menu) com opções relacionadas com a entrada selecionada. É possível adicionar outros componentes ao menu como ícones de imagem, um componente de botões de radio e até mesmos botões de cheque.
JMenubar
Uma implementação de uma barra de menu. Você pode adicionar objetos JMenu para a barra de menu para a construção de um menu.
JMenu
Uma implementação de um menu – uma janela pop-up contendo JMenuItems que é exibido quando o usuário seleciona um item no JMenuBar. Um JMenu também pode conter JSeparators.
JSeparator
JSeparator fornece um componente de uso geral para a implementação de linhas divisórias – mais comumente usado como um divisor entre os itens de menu que os divide em grupos lógicos.
JMenuItem
Uma implementação de um item em um menu. Um item de menu é essencialmente um botão em uma lista. Quando o usuário seleciona o botão, a ação associada ao item de menu é executado.
Exemplo:
Neste exemplo criamos um menu com seus sub-menus e seus respectivos eventos.
Java
import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPopupMenu; public class CriaMenu { // Declara componentes JLabel texto; // Cria o menu completo public JMenuBar criaMenu() { // Declara componentes do menu genericamente JMenuBar barraMenu; JMenu menu; JMenu submenu; JMenuItem menuItem; // Cria barra do Menu barraMenu = new JMenuBar(); // Cria menu menu = new JMenu("Menu 1"); // Adiciona menu a barra barraMenu.add(menu); // Cria item do menu menuItem = new JMenuItem("Item do Menu 1", KeyEvent.VK_I); // Cria evento do item menuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { texto.setText("Você cliquou no item: 1 do menu 1"); } }); // Adiciona item ao Menu menu.add(menuItem); // Repete processo para o segundo item menuItem = new JMenuItem("Item do Menu 2", KeyEvent.VK_T); menuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { texto.setText("Você cliquou no item: 2 do menu 1"); } }); menu.add(menuItem); // Repete processo para o terceiro item menuItem = new JMenuItem("Item do Menu 3", KeyEvent.VK_E); menuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { texto.setText("Você cliquou no item: 3 do menu 1"); } }); menu.add(menuItem); // Adiciona um separador de menu menu.addSeparator(); // Repete processo para o quarto item menuItem = new JMenuItem("Item do Menu 4", KeyEvent.VK_M); menuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { texto.setText("Você cliquou no item: 4 do menu 1"); } }); menu.add(menuItem); // SubMenu // para criar um submenu cria-se um novo menu. // e adiciona um item // Cria um submenu (novo menu) submenu = new JMenu("Item com Submenu"); // Cria um item e seu evento menuItem = new JMenuItem("Item do Submenu", KeyEvent.VK_U); menuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { texto.setText("Você cliquou no item: 1 do sub menu"); } }); // Adiciona item ao submenu submenu.add(menuItem); // Adiciona submenu ao menu menu.add(submenu); // Cria um segundo menu menu = new JMenu("Menu 2"); // Cria item para o segundo menu e seu evento menuItem = new JMenuItem("Item do menu 2", KeyEvent.VK_D); menuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { texto.setText("Você cliquou no item: 1 do menu 2"); } }); // Adiciona item ao menu menu.add(menuItem); // Adiciona menu a barra de menus barraMenu.add(menu); // retorna menu completo return barraMenu; } // Cria um painel public Container criaPainel() { // Cria painel e suas propriedades JPanel painel = new JPanel(new BorderLayout()); painel.setOpaque(true); // Cria um componente de texto texto = new JLabel("Você cliquou no item:"); // Adiciona componente ao painel painel.add(texto, BorderLayout.PAGE_END); /// Retorna Painel return painel; } // Cria GUI public static void criaGUI() { // Cria formulario e suas propriedades JFrame formulario = new JFrame("Desenvolvimento Aberto"); formulario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Cria Menu CriaMenu menu = new CriaMenu(); // Adiciona barra de menus na GUI formulario.setJMenuBar(menu.criaMenu()); // Adiciona painel na GUI formulario.setContentPane(menu.criaPainel()); // Adiciona propriedades ao formulario formulario.setSize(400, 300); formulario.setVisible(true); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { @Override public void run() { // Monta GUI criaGUI(); } }); } }