2009/2010 Tópicos das aulas Teórico Práticas
Helena Leitão & Dulce Mota 1
Criação de menus em Swing
Paradigmas de Programação
Para a criação de menus iremos usar objectos das classes
JMenuBar
,
JMenu
e
JMenuItem
.
Os menus podem ser adicionados aos objectos das classes que
disponibilizam o método
setMenuBar
, como é o caso de JFrame.
A classe JMenuBar permite criar uma barra de menus, herda de
JComponent e é um contentor para objectos de JMenu .
JMenu é um contentor para items de menu, objectos da classe
JMenuItem.
Também podem ser usados como items de menu botões de opção
(JRadioButtonMenuItem) e caixas de selecção (JCheckBoxMenuItem)
mas não serão vistos aqui.
Paradigmas de Programação
Exemplo:
Construir uma janela com uma barra de menus, Menu1 e Menu2,
definir para o Menu1 items de menu com um texto, com texto e
imagem, só com imagem e ainda um item com submenus, de modo a
obter-se o seguinte aspecto, carregando em Verde ou Amarelo assim
muda a cor da janela.
2009/2010 Tópicos das aulas Teórico Práticas
Helena Leitão & Dulce Mota 3 //Construtor da janela que vai conter o menu
public MinhaJanela(String s) { super(s);
//Criaçao da barra de menu menuBar = new JMenuBar(); //O primeiro menu
menu = new JMenu("Menu1 "); menu.setMnemonic(KeyEvent.VK_1);
menuBar.add(menu); //junta à barra de menus o menu
import java.awt.*;import java.awt.event.*;import javax.swing.*; public class MinhaJanela extends JFrame{
JMenuBar menuBar; JMenu menu, submenu; JMenuItem menuItem;
Container c;
//Um grupo de JMenuItems
menuItem = new JMenuItem("Texto",KeyEvent.VK_T); menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_X, ActionEvent.ALT_MASK)); menu.add(menuItem); //junta o menu item ao menu
//Criar objecto de escuta
MenuItemEscuta mesc=new MenuItemEscuta();
menuItem.addActionListener(mesc); //junta objecto de escuta ao menu item
menuItem = new JMenuItem("Texto e Imagem",new ImageIcon("SBWeb_04.gif")); menuItem.setMnemonic(KeyEvent.VK_I); menu.add(menuItem);
menuItem = new JMenuItem(new ImageIcon("SBWeb_04.gif"));
Paradigmas de Programação
2009/2010 Tópicos das aulas Teórico Práticas
Helena Leitão & Dulce Mota 5 //Um submenu é do tipo JMenu
submenu = new JMenu(“Cores");
submenu.setMnemonic(KeyEvent.VK_C);
menuItem = new JMenuItem(“Verde");
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
ActionEvent.ALT_MASK)); submenu.add(menuItem);
menuItem.addActionListener(mesc); //junta objecto de escuta ao menu item menuItem = new JMenuItem(“Amarelo");
submenu.add(menuItem);
menuItem.addActionListener(mesc); //junta objecto de escuta ao menu item menu.add(submenu); //junta o submenu ao menu
//Construçao do segundo menu na barra de menu. menu = new JMenu("Menu_2");
menu.setMnemonic(KeyEvent.VK_2);
menuBar.add(menu); //junta o menu à barra de menu //Junta a barra de menu à janela
this.setJMenuBar(menuBar);
//Obtem o content pane do frame e pinta-o de azul c=getContentPane();
c.setBackground(Color.BLUE); } //termina o construtor
2009/2010 Tópicos das aulas Teórico Práticas
Helena Leitão & Dulce Mota 7 //Classe Interna
class MenuItemEscuta implements ActionListener{ public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("Texto")) JOptionPane.showMessageDialog(MinhaJanela.this,"Executou o item TEXTO"); else { if((e.getActionCommand()).equals("Verde")) c.setBackground(Color.GREEN); else if((e.getActionCommand()).equals("Amarelo")) c.setBackground(Color.YELLOW); } }
}//fecha a classe interna
}//fecha a classe MinhaJanela
import java.awt.*; import javax.swing.*; public class TesteMenu {
public static void main(String[] args) {
JFrame janela= new MinhaJanela("Teste de menus"); janela.setSize(400,300); janela.setVisible(true); janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }