Java - Menus

De Aulas

Afluentes: Programação em Java

Menus

Menus01.png

Menus de Barra

// Cria a barra de menu superior para nosso programa
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);

// Adiciona um item no menu
JMenu menu = new JMenu("Arquivo");
menuBar.add(menu);
menu.setMnemonic(KeyEvent.VK_A);

// Adiciona alguns itens
JMenuItem menuItem01 = new JMenuItem("Novo - único com ação", KeyEvent.VK_N);
menu.add(menuItem01);

Itens de Menu

Menus02.png

Os ítens de menu podem ser inicializados de várias formas:

// Adiciona um itens com tecla de atalho
JMenuItem menuItem01 = new JMenuItem("Novo - único com ação", KeyEvent.VK_N);
menu.add(menuItem01);

// Adiciona ação para o item do menu
menuItem01.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent arg0) {
        count++;
        setTitle("Menus: Exemplo " + count);
    }
});

// Adiciona um item com iagem e texto
ImageIcon iconOpen = new ImageIcon("open.png");
JMenuItem menuItem02 = new JMenuItem("Novo com icone", iconOpen);
menu.add(menuItem02);

// Adiciona um item só com imagem
JMenuItem menuItem3 = new JMenuItem(iconOpen);
menu.add(menuItem3);

// Adiciona um separador
menu.addSeparator();

Itens de Menu - RadioButtons

Menus03.png
// Adiciona um grupo de botões para os RadioButtons
ButtonGroup group = new ButtonGroup();

// Adiciona um RadioButton
JMenuItem rbMenuItem = new JRadioButtonMenuItem("Um item de menu com RadioButton");
rbMenuItem.setSelected(true);
menu.add(rbMenuItem);
group.add(rbMenuItem);

// Adiciona outro RadioButton
rbMenuItem = new JRadioButtonMenuItem("Outro com Radiobutton");
menu.add(rbMenuItem);
group.add(rbMenuItem);

Itens de Menu - CheckBox

Menus04.png
// Adiciona um item de menu CheckBox
JMenuItem cbMenuItem = new JCheckBoxMenuItem("Um item de menu com CheckBox");
cbMenuItem.setMnemonic(KeyEvent.VK_C);
menu.add(cbMenuItem);

// Adiciona outro item de menu CheckBox
cbMenuItem = new JCheckBoxMenuItem("Outro com CheckBox");
cbMenuItem.setMnemonic(KeyEvent.VK_H);
menu.add(cbMenuItem);

Itens de Menu - Submenus

Menus05.png
// Adiciona um item que abre um submenu
JMenu submenu = new JMenu("Um submenu");
menu.add(submenu);

// Adiciona um item ao submenu
JMenuItem menuItem = new JMenuItem("Um item do submneu");
submenu.add(menuItem);

// Adiciona outro item ao submenu
menuItem = new JMenuItem("Outro item do submenu");
submenu.add(menuItem);

Código Exemplo

 1import javax.swing.*;
 2import java.awt.*;
 3import java.awt.event.*;
 4
 5public class Menu01 extends JFrame {
 6    private static final long serialVersionUID = 1L;
 7    private int count = 0;
 8
 9    public Menu01() {
10        super("Menus: Exemplo");
11        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
12        setLayout(new BorderLayout());
13        setPreferredSize(new Dimension(400, 300));
14
15        // Cria a barra de menu superior para nosso programa
16        JMenuBar menuBar = new JMenuBar();
17        setJMenuBar(menuBar);
18
19        // Adiciona um item no menu
20        JMenu menu = new JMenu("Arquivo");
21        menuBar.add(menu);
22        menu.setMnemonic(KeyEvent.VK_A);
23
24        // Adiciona um itens com tecla de atalho
25        JMenuItem menuItem01 = new JMenuItem("Novo - único com ação", KeyEvent.VK_N);
26        menu.add(menuItem01);
27
28        // Adiciona ação para o item do menu
29        menuItem01.addActionListener(new ActionListener() {
30            @Override
31            public void actionPerformed(ActionEvent arg0) {
32                count++;
33                setTitle("Menus: Exemplo " + count);
34            }
35        });
36
37        // Adiciona um item com iagem e texto
38        ImageIcon iconOpen = new ImageIcon("open.png");
39        JMenuItem menuItem02 = new JMenuItem("Novo com icone", iconOpen);
40        menu.add(menuItem02);
41
42        // Adiciona um item só com imagem
43        JMenuItem menuItem3 = new JMenuItem(iconOpen);
44        menu.add(menuItem3);
45
46        // Adiciona um separador
47        menu.addSeparator();
48
49        // Adiciona um grupo de botões para os RadioButtons
50        ButtonGroup group = new ButtonGroup();
51
52        // Adiciona um RadioButton
53        JMenuItem rbMenuItem = new JRadioButtonMenuItem("Um item de menu com RadioButton");
54        rbMenuItem.setSelected(true);
55        menu.add(rbMenuItem);
56        group.add(rbMenuItem);
57
58        // Adiciona outro RadioButton
59        rbMenuItem = new JRadioButtonMenuItem("Outro com Radiobutton");
60        menu.add(rbMenuItem);
61        group.add(rbMenuItem);
62
63        menu.addSeparator();
64
65        // Adiciona um item de menu CheckBox
66        JMenuItem cbMenuItem = new JCheckBoxMenuItem("Um item de menu com CheckBox");
67        cbMenuItem.setMnemonic(KeyEvent.VK_C);
68        menu.add(cbMenuItem);
69
70        // Adiciona outro item de menu CheckBox
71        cbMenuItem = new JCheckBoxMenuItem("Outro com CheckBox");
72        cbMenuItem.setMnemonic(KeyEvent.VK_H);
73        menu.add(cbMenuItem);
74
75        menu.addSeparator();
76
77        // Adiciona um item que abre um submenu
78        JMenu submenu = new JMenu("Um submenu");
79        menu.add(submenu);
80
81        // Adiciona um item ao submenu
82        JMenuItem menuItem = new JMenuItem("Um item do submneu");
83        submenu.add(menuItem);
84
85        // Adiciona outro item ao submenu
86        menuItem = new JMenuItem("Outro item do submenu");
87        submenu.add(menuItem);
88
89        pack();
90        setVisible(true);
91    }
92
93    public static void main(String[] args) {
94        new Menu01();
95    }
96}

Atividade 2

Faça um programa em java usando swing com um menu. A janela contém um campo texto grande, como um editor de texto. Cada item do menu faz alguma ação no texto como adicionar um texto, apagar tudo, colocar ou tirar a quebra de linha automática do texto, a quebra de palavras, etc.

Resolução

  1import javax.swing.*;
  2import java.awt.*;
  3import java.awt.event.*;
  4
  5public class Editor extends JFrame {
  6    private static final long serialVersionUID = 1L;
  7    private boolean editable = true;
  8    private boolean warp = false;
  9    private boolean wordWarp = false;
 10
 11    public Editor() {
 12        super("Editor");
 13        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 14        setLayout(new BorderLayout());
 15        setPreferredSize(new Dimension(600, 500));
 16
 17        JTextArea area = new JTextArea();
 18        area.setText("Testando 1, 2, 3");
 19        JScrollPane scroll = new JScrollPane(area);
 20        getContentPane().add(scroll, BorderLayout.CENTER);
 21
 22        JMenuBar menuBar = new JMenuBar();
 23        setJMenuBar(menuBar);
 24        
 25        JMenu menuArquivo = new JMenu("Arquivo");
 26        menuBar.add(menuArquivo);
 27        menuArquivo.setMnemonic(KeyEvent.VK_A);
 28
 29        JMenu menuEditar = new JMenu("Editar");
 30        menuBar.add(menuEditar);
 31        menuEditar.setMnemonic(KeyEvent.VK_E);
 32
 33        JMenuItem menuItemApagarTudo = new JMenuItem(
 34            "Apagar tudo", KeyEvent.VK_T);
 35        menuEditar.add(menuItemApagarTudo);
 36
 37        menuItemApagarTudo.addActionListener(new ActionListener() {
 38            @Override
 39            public void actionPerformed(ActionEvent arg0) {
 40                area.setText("");
 41            }
 42        });
 43
 44        JMenuItem menuItemDuplicar = new JMenuItem(
 45            "Duplicar", KeyEvent.VK_D);
 46        menuEditar.add(menuItemDuplicar);
 47
 48        menuItemDuplicar.addActionListener(new ActionListener() {
 49            @Override
 50            public void actionPerformed(ActionEvent arg0) {
 51                area.setText(area.getText() + "\n" + area.getText());
 52            }
 53        });
 54
 55        JMenu menuConfig = new JMenu("Configuração");
 56        menuBar.add(menuConfig);
 57        menuConfig.setMnemonic(KeyEvent.VK_C);
 58
 59        JMenuItem menuItemEditavel = new JMenuItem(
 60            "Editavel", KeyEvent.VK_E);
 61            menuConfig.add(menuItemEditavel);
 62
 63        menuItemEditavel.addActionListener(new ActionListener() {
 64            @Override
 65            public void actionPerformed(ActionEvent arg0) {
 66                editable = !editable;
 67                area.setEditable(editable);
 68            }
 69        });
 70
 71        JMenuItem menuItemWarp = new JMenuItem(
 72            "Quebrar Linhas", KeyEvent.VK_Q);
 73        menuConfig.add(menuItemWarp);
 74
 75        menuItemWarp.addActionListener(new ActionListener() {
 76            @Override
 77            public void actionPerformed(ActionEvent arg0) {
 78                warp = !warp;
 79                area.setLineWrap(warp);
 80            }
 81        });
 82
 83        JMenuItem menuItemWordWarp = new JMenuItem(
 84            "Quebrar Palavras", KeyEvent.VK_P);
 85        menuConfig.add(menuItemWordWarp);
 86
 87        menuItemWordWarp.addActionListener(new ActionListener() {
 88            @Override
 89            public void actionPerformed(ActionEvent arg0) {
 90                wordWarp = !wordWarp;
 91                area.setWrapStyleWord(wordWarp);
 92            }
 93        });
 94
 95        pack();
 96        setVisible(true);
 97    }
 98
 99    public static void main(String[] args) {
100        new Editor();
101    }
102}