• Nenhum resultado encontrado

Não é necessário um gerenciador de layout para se colocar um menu numa janela. Sua elaboração é direta:

JMenuBar menuBar = new JMenuBar();

Uma barra de menu pode ser colocada onde se queira, mas normalmente aparece na parte superior do frame. Usa-se:

frame.setJMenuBar(menuBar);

Para cada menu cria-se um objeto menu:

JMenu editMenu = new JMenu(“Edit”);

Então se adicionam os itens, separadores e submenus:

Esse método (addItem) adiciona a string no final da lista; pode-se também inserir em qualquer lugar:

style.insertItemAt(“Monospaced”, 0);

Para remover itens usa-se:

style.removeItem(“Monospaced”);

style.removeItemAt(0); // remove o primeiro item style.removeAllItems();

Para tratar dos eventos, captura-se um evento de ação, logo, tratando-se o método actionPerformed:

public void actionPerformed(ActionEvent evt) { JComboBox source (JComboBox)evt.getSource(); String item = (String)source.getSelectedItem(); panel.setStyle(item);

}

Figura 17 – Exemplo jList.

Exercícios de Fixação 2 – GUI em Java

Liste os recursos que o pacote swing do Java disponibiliza para desenvolvimento de interfaces gráficas que você aprendeu até o momento.

Atividade 1 – GUI em Java

1. Escreva uma aplicação Swing Java com uma interface que tenha duas caixas de listas JList, do mesmo tamanho, uma ao lado da outra, denominadas lista 01 (a esquerda) e lista 02 (a direita). Implemente uma entrada de texto (JTextField) que permitirá a digitação de palavras que serão adicionadas apenas à lista 01. Por meio de botões JButton deve ser possível: mover os itens selecionados da lista 01 para a lista 02;

mover todos os itens da lista 01 para a lista 02; mover os itens selecionados da lista 02 para a lista 01; e mover todos os itens da lista 02 para lista 01. Por fim, implemente um botão que possibilidade remover os itens selecionados de cada uma das listas (um botão para cada lista).

2. Escreva uma aplicação Swing Java com uma interface que permita a seleção (JComboBox) de uma entre 5 opções de cores que serão utilizadas para preencher a cor de fundo do JFrame onde a caixa de seleção foi disponibilizada.

3. Escreva uma janela JDialog que exiba uma pergunta (em um rótulo JLabel) e cinco alternativas de resposta (usando botões de opções de JRadioButton). A pergunta e suas alternativas devem ser especificadas por métodos próprios, bem como a resposta correta. Apenas uma alternativa poderá ser selecionada. Por meio de um botão JButton, a aplicação deverá avaliar se a resposta está ou não correta, impedindo a partir de seu acionamento a alteração da resposta. Como opção ajustável, a janela deve exibir uma mensagem de diálogo (com JOptionPane) com a indicação de acerto ou erro.

4. Escreva uma aplicação Swing Java que implemente uma sequência de questões a serem apresentadas pela janela implementada no exercício 3. Esta aplicação deverá calcular e escrever uma mensagem (JOptionPane) com o total de acertos e erros obtidos.

Atividade 2 – GUI em Java (complementar)

1. Escreva uma aplicação Swing Java que implemente implemente uma interface onde o usuário deverá informar seu usuário (JTextField) e senha (JPasswordField) e, ao clicar no botão de acesso (JButton), seja feita uma verificação um array com a lista de usuários e senhas que tenham acesso ao sistema. A mensagem ACESSO

PERMITIDO deverá ser exibida caso seja encontrado um usuário com a senha

informada. Exiba a mensagem ACESSO NEGADO caso não seja encontrado o usuário e senha informados no array de usuários.

3.10 Menus

Não é necessário um gerenciador de layout para se colocar um menu numa janela. Sua elaboração é direta:

JMenuBar menuBar = new JMenuBar();

Uma barra de menu pode ser colocada onde se queira, mas normalmente aparece na parte superior do frame. Usa-se:

frame.setJMenuBar(menuBar);

Para cada menu cria-se um objeto menu:

JMenu editMenu = new JMenu(“Edit”);

Então se adicionam os itens, separadores e submenus:

editMenu.addSeparator(); ...

Também se adiciona menus de nível mais alto à barra de menus:

menuBar.addMenu(editMenu);

Quando o usuário seleciona um menu ocorre um evento de ação. É necessário instalar um ouvinte de evento de ação para cada item do menu:

pasteItem.addActionListener(this);

A geração desse código todo é um tanto quanto trabalhosa, por exemplo:

JMenu menu = new JMenu(“Edit”); item = new JMenuItem(“Cut”); item.addActionListener(this); menu.add(item);

item = new JMenuItem(“Copy”); item.addActionListener(this); menu.add(item);

item = new JMenuItem(“Paste”); item.addActionListener(this); menu.add(item);

menuBar.add(menu);

Para responder a eventos de menu usa-se actionPerformed:

public void actionPerformed(ActionEvent evt) { if (evt.getSource() instanceof JmenuItem) {

String arg = evt.getActionCommand(); if (arg.equals(“Open”)) ...

else if (arg.equals(“Save”)) ... ...

} }

As teclas de atalho podem ser especificadas no construtor dos itens de menu:

JMenuItem cutItem = new JMenuItem(“Cut”, ‘T’);

Para teclas de atalho para o menu principal, deve-se usar o seguinte:

JMenu helpMenu = new JMenu(“Help”); HelpMenu.setMnemonic(‘H’);

Para acessar as teclas de atalho usa-se ALT+ letra.

Quando se quer teclas de atalho, do tipo CTRL+S para salvar, isto é, para que itens de menu sejam chamados, sem sequer abrir o menu onde estão, então usa-se setAccelerator.

openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));

Para inserir ícones nos itens de menu, usa-se o seguinte construtor:

JMenuItem cutItem = new JMenuItem(“Cut”, new ImageIcon(“cut.gif”));

Para criar itens de menu usando botões de rádio e check boxes, usa-se outros objetos:

JCheckBoxMenuItem readOnlyItem = new JCheckBoxMenuItem(“Read-only”);

Os itens de menu em forma de botões de rádio funcionam exatamente como controles comuns, isto é, deve-se criar um grupo para eles, para possuam o efeito esperado:

ButtonGroup group = new ButtonGroup();

JRadioButtonMenuItem insertItem = new JRadioButtonMenuItem(“Insert”); insertItem.setSelected(true);

JRadioButtonMenuItem overtypeItem = new JRadioButtonMenuItem(“Overtype”); group.add(insertItem);

group.add(overtypeItem); optionsMenu.add(insertItem); optionsMenu.add(overtypeItem);

Menus flutuantes são facilmente implementados também:

JPopupMenu popup = new JPopupMenu();

Os itens são adicionados da forma usual:

JMenuItem item = new JMenuItem(“Cut”); item.addActionListener(this);

popup.add(item);

Para abrir explicitamente um menu flutuante usa-se o método show.

popup.show(painel, x, y);

Ondepainel é o controle que será pai no menu, x ey é a localização.

Os menus flutuantes normalmente estão associados ao pressionamento de um botão particular do mouse, como no Windows. Para que isso aconteça, deve-se:

public void mouseReleased(MouseEvent evt) { if (evt.isPopupTrigger())

popup.show(evt.getComponent(), evt.getX(), evt.getY()); }

Para habilitar e desabilitar itens de menu, pode-se usar:

saveItem.setEnabled(false);

Mas isso pode levar o código a ficar cheio de instruções lidando com os menus. Então pode-se usar um tratador de eventos de menu. Existe o MenuListener, com três métodos:

void menuSelected(MenuEvent evt); // chamado antes do menu ser exibido void menuDeselected(MenuEvent evt);// depois que o menu é removido da tela void menuCanceled(MenuEvent evt); // qdo a seleção é cancelada

editMenu.addSeparator(); ...

Também se adiciona menus de nível mais alto à barra de menus:

menuBar.addMenu(editMenu);

Quando o usuário seleciona um menu ocorre um evento de ação. É necessário instalar um ouvinte de evento de ação para cada item do menu:

pasteItem.addActionListener(this);

A geração desse código todo é um tanto quanto trabalhosa, por exemplo:

JMenu menu = new JMenu(“Edit”); item = new JMenuItem(“Cut”); item.addActionListener(this); menu.add(item);

item = new JMenuItem(“Copy”); item.addActionListener(this); menu.add(item);

item = new JMenuItem(“Paste”); item.addActionListener(this); menu.add(item);

menuBar.add(menu);

Para responder a eventos de menu usa-se actionPerformed:

public void actionPerformed(ActionEvent evt) { if (evt.getSource() instanceof JmenuItem) {

String arg = evt.getActionCommand(); if (arg.equals(“Open”)) ...

else if (arg.equals(“Save”)) ... ...

} }

As teclas de atalho podem ser especificadas no construtor dos itens de menu:

JMenuItem cutItem = new JMenuItem(“Cut”, ‘T’);

Para teclas de atalho para o menu principal, deve-se usar o seguinte:

JMenu helpMenu = new JMenu(“Help”); HelpMenu.setMnemonic(‘H’);

Para acessar as teclas de atalho usa-se ALT+ letra.

Quando se quer teclas de atalho, do tipo CTRL+S para salvar, isto é, para que itens de menu sejam chamados, sem sequer abrir o menu onde estão, então usa-se setAccelerator.

openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));

Para inserir ícones nos itens de menu, usa-se o seguinte construtor:

JMenuItem cutItem = new JMenuItem(“Cut”, new ImageIcon(“cut.gif”));

Para criar itens de menu usando botões de rádio e check boxes, usa-se outros objetos:

JCheckBoxMenuItem readOnlyItem = new JCheckBoxMenuItem(“Read-only”);

Os itens de menu em forma de botões de rádio funcionam exatamente como controles comuns, isto é, deve-se criar um grupo para eles, para possuam o efeito esperado:

ButtonGroup group = new ButtonGroup();

JRadioButtonMenuItem insertItem = new JRadioButtonMenuItem(“Insert”); insertItem.setSelected(true);

JRadioButtonMenuItem overtypeItem = new JRadioButtonMenuItem(“Overtype”); group.add(insertItem);

group.add(overtypeItem); optionsMenu.add(insertItem); optionsMenu.add(overtypeItem);

Menus flutuantes são facilmente implementados também:

JPopupMenu popup = new JPopupMenu();

Os itens são adicionados da forma usual:

JMenuItem item = new JMenuItem(“Cut”); item.addActionListener(this);

popup.add(item);

Para abrir explicitamente um menu flutuante usa-se o método show.

popup.show(painel, x, y);

Ondepainel é o controle que será pai no menu, x ey é a localização.

Os menus flutuantes normalmente estão associados ao pressionamento de um botão particular do mouse, como no Windows. Para que isso aconteça, deve-se:

public void mouseReleased(MouseEvent evt) { if (evt.isPopupTrigger())

popup.show(evt.getComponent(), evt.getX(), evt.getY()); }

Para habilitar e desabilitar itens de menu, pode-se usar:

saveItem.setEnabled(false);

Mas isso pode levar o código a ficar cheio de instruções lidando com os menus. Então pode-se usar um tratador de eventos de menu. Existe o MenuListener, com três métodos:

void menuSelected(MenuEvent evt); // chamado antes do menu ser exibido void menuDeselected(MenuEvent evt);// depois que o menu é removido da tela void menuCanceled(MenuEvent evt); // qdo a seleção é cancelada

No documento Java Interfaces Gráficas e Banco de Dados (páginas 36-40)

Documentos relacionados