Buscar

AULA 7 - PROGRAMAÇÃO ORIENTADA A OBJETOS

Prévia do material em texto

Interface Gráfica com Swing
Eventos
Aula 7
Professora: Jane
Programação Orientada a Objetos Professora : Jane2
Interfaces mais ricas
• Vamos ver como se constrói interfaces com
 Menus 
 Caixas de informação e de diálogo 
 Campos de texto
 Botões
 Lista 
 Caixa de opções (combo box)
 Tabelas
Notem que, neste momento inicial do curso, estamos 
trabalhando com o projeto das interfaces, considerando seus componentes, 
seus layouts e formas de incrementá-las com bordas, cor, fonte, etc...
Programação Orientada a Objetos Professora : Jane3
Menu
• Para criar menus são destacadas 3 classes :
 JMenu
 JMenuBar
 JMenuItem menu Arquivo
Barra de menus
Item do menu
Programação Orientada a Objetos Professora : Jane4
Hierarquia
Programação Orientada a Objetos Professora : Jane5
Trecho de código
JMenu arquivo = new JMenu("Arquivo"); //cria o menu arquivo
JMenuItem abrir = new JMenuItem("Abrir"); //cria a opção/item abrir do menu
JMenuBar menuBar = new JMenuBar(); //cria a barra de menus
//Adicionando ...
arquivo.add (abrir); //o item abrir é adicionado ao menu arquivo
menuBar.add(arquivo); //o menu arquivo é adicionado à barra de menus menuBar
Observe o método setJMenuBar a seguir ...
Programação Orientada a Objetos Professora : Jane6
Formalizando ...
• public void setJMenuBar(JMenuBar barraMenu) : atribui/define a 
barraMenu para o frame que está usando o método. 
Parâmetro : 
barraMenu  a barra de menu que está sendo colocada no frame. 
• Exemplo :
JFrame f = new JFrame();
f.setJMenuBar(menuBar); // menuBar é um objeto da classe JMenuBar
Teste a aplicação completa e 
verifique o que faz o método addSeparator()
Veja o projeto
exemplo
Aula7_ExemploMenuEvento
Programação Orientada a Objetos Professora : Jane7
Exercício de fixação
Adicione o menu Sobre à aplicação dada no 
slide anterior e permita que tal menu possua, pelo 
menos, 2 itens.
Observe como se cria tecla de atalho em menu 
com o método setMnemonic.
Nota : 
void addSeparator () : põe um separador
Programação Orientada a Objetos Professora : Jane8
Recordando ...
Manipulação de eventos com botão
 Para manipular botões trabalharemos com ActionEvent e 
portanto, com a interface ActionListener.
 Lembrando ... passos para manipulação do evento :
1) Criar uma classe interna que implemente a interface ActionListener. Para 
isso, o método actionPerformed deverá ser programado.
2) Criar um objeto da classe interna mencionada acima. Este objeto será o 
tratador do evento, ou seja, o ouvinte da ação.
3) Associar o objeto que é a fonte do evento com o objeto ouvinte do 
evento, que irá tratar o evento. Para isso, use 
<objeto fonte>. add<nome da interface>(<objeto ouvinte>);
Programação Orientada a Objetos Professora : Jane9
Manipulação de eventos com menu
 Para manipular opções de menu trabalharemos com 
ActionEvent e portanto, com a interface ActionListener. Ou 
seja, faça o que aprendeu com botões da classe JButton.
 Passos para manipulação do evento :
1) Criar uma classe interna que implemente a interface ActionListener. Para 
isso, o método actionPerformed deverá ser programado.
2) Criar um objeto da classe interna mencionada acima. Este objeto será o 
tratador do evento, ou seja, o ouvinte da ação.
3) Associar o objeto que é a fonte do evento (no caso, o item do menu) com 
o objeto ouvinte do evento, que irá tratar o evento. Para isso, use 
<objeto fonte>. add<nome da interface>(<objeto ouvinte>);
Programação Orientada a Objetos Professora : Jane10
Exemplo : Aplicação com menu 
• Trecho : Considere as opções Abrir e Sair do menu Arquivo.
//////////////////////////////////////////////////////////
// Eventos
//////////////////////////////////////////////////////////
Ouvinte ouvinte = new Ouvinte();
sair.addActionListener(ouvinte);
abrir.addActionListener(ouvinte);
Fonte do evento : sair
Fonte do evento : abrir
Ouvinte do evento : objeto ouvinte da classe Ouvinte
Programação Orientada a Objetos Professora : Jane11
• Dentro da classe pública de nossa aplicação :
private class Ouvinte implements ActionListener {
public void actionPerformed (ActionEvent e)
{
Object obj = e.getSource();
if (obj == sair) {
JOptionPane.showMessageDialog(null,"Testando ... Fechando a aplicação.");
System.exit(0); //termina o programa
}
else
if (obj == abrir)
JOptionPane.showMessageDialog(null,"Abrindo arquivo ...");
} //fim do método actionPerformed
} //fim da classe Ouvinte
Veja o projeto
exemplo
Aula7_ExemploMenuEvento
Programação Orientada a Objetos Professora : Jane12
Listeners
 No Java os eventos são tratados por objetos chamados 
“listeners” (ouvintes).
Listenerclicou
evento gerado
Fonte do evento : opção Sair do 
menu Arquivo.
Programação Orientada a Objetos Professora : Jane13
Já visto ....
ActionListener e ActionEvent
 Interface ActionListener:
Métodos a serem implementados Componentes que geram esse evento
public void actionPerformed(ActionEvent 
evento)
Clicar em botão
Seleção em item de lista
Seleção em menu
Campo de texto
 Evento ActionEvent:
Método Descrição
String getActionCommand() Retorna a string que identifica a ação.
Exemplo : Em botão  retorna o label do botão
Object getSource() Retorna o objeto que sofreu o evento, ou seja, a fonte do evento.
 As interfaces e eventos estão no pacote java.awt.event . Logo, devemos 
importar este pacote.
Programação Orientada a Objetos Professora : Jane14
Usando o projeto do arquivo 
Aula7_ExemploMenuEvento
• Tarefa : Adicione o item Pintar Painel ao menu Editar. Em seguida, permita 
que quando a opção Pintar Painel for acionada, a cor de fundo da janela mude 
para azul.
DICA : Use o método getContentPane() 
Programação Orientada a Objetos Professora : Jane15
Manipulação de eventos em janelas
• Para trabalhar com janelas teremos que tratar eventos da classe WindowEvent. A 
classe do objeto tratador do evento deverá implementar a interface 
WindowListener, que possui 7 métodos.
E agora ? Teremos que implementar os 7 métodos ?
classe interface métodos da interface
Programação Orientada a Objetos Professora : Jane16
Classe Adapter
• Muitas interfaces ouvintes de eventos como WindowListener especifica 
muitos métodos. Como visto, a interface WindowsListener possui 7
métodos de tratamento de eventos de janela.
• Para muitas das interfaces ouvintes que têm múltiplos métodos, os 
pacotes java.awt.event e javax.swing.event fornecem classes 
adaptadoras ouvintes de evento.
• O que é uma classe Adapter ?
“Uma classe Adapter implementa uma interface e fornece uma 
implementação padrão ou default (com o corpo de um método vazio) de 
cada método da interface. “ 
Fonte : Material do aluno - Java Como Programar – Deitel e Deitel
NOTE : O livro acima pode ser encontrado na Biblioteca Virtual Estácio
Programação Orientada a Objetos Professora : Jane17
Como usar uma classe Adapter ? 
1º) Fazer uma extensão da classe Adapter para poder 
herdar a implementação default de cada método
(usar extends).
2º) Sobrescrever cada método que for necessário para 
o tratamento de eventos. Ou seja, implementar 
apenas os métodos que interessem para a 
aplicação.
Programação Orientada a Objetos Professora : Jane18
Classes adaptadoras de eventos e as
interfaces que elas implementam
Classe adaptadora de eventos Implementa a interface
ComponentAdapter ComponentListener
ContainerAdapter ContainerListener
FocusAdapter FocusAdapter
KeyAdapter KeyListener
MouseAdapter MouseListener
MouseMotionAdapter MouseMotionListenerWindowAdapter WindowListener
Programação Orientada a Objetos Professora : Jane19
Os SETE métodos 
da interface WindowListener 
void windowActivated(WindowEvent e) : ação a ser realizada se a janela foi 
ativada
void windowClosed(WindowEvent e) : chamado quando uma janela foi fechada
void windowClosing(WindowEvent e) : ação a ser realizada se a janela está 
sendo fechada.
void windowDeactivated(WindowEvent e) : invocado quando a janela não é 
mais a janela ativa.
Programação Orientada a Objetos Professora : Jane20
void windowDeiconified(WindowEvent e) : invocado quando uma janela muda 
de minimizada para seu estado normal.
void windowIconified(WindowEvent e) : invocado quando uma janela muda 
de normal para minimizada.
void windowOpened(WindowEvent e) : ação a ser realizada se a janela foi 
aberta .
Exemplo : Projeto Aula7_EventosJanelas
Programação Orientada a Objetos Professora : Jane21
NOTA :
Para solicitar confirmação na hora de sair da aplicação, por exemplo, seja 
via menu ou via janela, podemos usar janela de diálogo com 
showConfirmDialog 
//Trecho ...
int opcao = JOptionPane.showConfirmDialog(null,
"Tem certeza que deseja fechar ... ?", 
"Confirmação", JOptionPane.YES_NO_OPTION);
if (opcao == JOptionPane.YES_OPTION)
//Faz o que tem que ser feito .... 
Programação Orientada a Objetos Professora : Jane22
JComboBox
 JComboBox cria uma lista drop down de seleção única
 Construtores:
 public JComboBox()
 Cria uma combo box vazia.
 public JComboBox(Object[] itens)
 Cria uma combo box com os elementos do vetor. Para apresentar os 
itens na tela, o método toString() é chamado para cada elemento 
do vetor.
 public JCheckBox(ComboBoxModel modelo)
 Cria uma combo box a partir do modelo
Programação Orientada a Objetos Professora : Jane23
JComboBox
 Alguns métodos:
 public void addItem(Object item)
 Adiciona um item à combo box.
 public Object getItemAt(int i)
 Retorna o i-ésimo elemento da combo box.
 public int getItemCount()
 Retorna a quantidade de elementos da combo box.
 public int getSelectedIndex()
 Retorna o índice do elemento selecionado.
 public Object getSelectedItem()
 Retorna o elemento selecionado.
 public void removeAllItems()
 Remove todos os elementos da combo box.
 public void removeItem(Object item)
 Remove o item especificado da combo box.
 public void removeItemAt(int i)
 Remove o i-ésimo elemento da combo box.
Programação Orientada a Objetos Professora : Jane24
Eventos no Combo Box 
• É possível termos eventos de ação (ActionEvent) ou eventos 
de item (ItemEvent).
• “The combo box fires an action event when the user selects 
an item from the combo box's menu .“ 
Fonte : http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html
• Tradução : Ocorre evento de ação no combo box quando o 
usuário seleciona um item do menu do combo box.
Programação Orientada a Objetos Professora : Jane25
Eventos no ComboBox
• “ Combo boxes also generate item events, which are fired when any of the 
items' selection state changes. Only one item at a time can be selected in a 
combo box, so when the user makes a new selection the previously selected item 
becomes unselected. Thus two item events are fired each time the user selects a 
different item from the menu. If the user chooses the same item, no item events 
are fired. Use addItemListener to register an item listener on a combo box. “
Fonte : http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html
• Tradução : Ocorre evento de item (item event) quando o estado de seleção do 
item muda. Apenas um item a cada vez pode ser selecionado em um combo box, 
então quando o usuário realiza uma nova seleção, o item previamente 
selecionado se torna desmarcado (DESELECTED). Assim, 2 eventos de item 
ocorrem a cada vez que o usuário seleciona um item diferente do menu de 
opções do combo. Se o usuário escolher o mesmo item, então nenhum evento 
de item ocorrerá. Use o método addItemListener para registrar um ouvinte de 
item em um combo box.
Programação Orientada a Objetos Professora : Jane26
Trabalhando com projetos
• Vamos testar o projeto ComboExemplo0 : observar os itens afetados 
pelo evento, ou seja, o item desmarcado e o item que foi selecionado.
• Ver projeto exemplo Exemplo1ComboSemClasseAnonima com 
combo box.
Note : O padrão do combo é não editável, mas é possível termos 
combos editáveis.
• Teste o projeto Aula8_Exemplo3_Combo
• Teste o projeto Aula8_Exemplo2_ComboParte1 e tire dúvidas.
Programação Orientada a Objetos Professora : Jane27
Tarefas :
1) Faça uma aplicação que leia o nome de uma pessoa e ofereça um comboBox
com faixas etárias :
o Até 12 anos
o De 13 anos até 17 anos
o De 18 em diante
Conforme a faixa selecionada deverá ser apresentada uma das mensagens 
abaixo :
o Infantil
o Juvenil
o Adulto
2) Adicione dois checkboxes para escolha de esporte : futebol, natação e judô.

Continue navegando