Baixe o app para aproveitar ainda mais
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ô.
Compartilhar