Java12

1,984 views

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,984
On SlideShare
0
From Embeds
0
Number of Embeds
36
Actions
Shares
0
Downloads
217
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Java12

  1. 1. Linguagens e Técnicas de Programação - JAVA José Marcos Barbosa da Silveira [email_address]
  2. 2. Controle de Eventos <ul><li>Objetivos deste capítulo </li></ul><ul><li>Enumerar as classes receptoras de eventos; </li></ul><ul><li>Demonstrar os principais eventos envolvidos na elaboração de uma aplicação; </li></ul><ul><li>Fornecer conhecimento para que o aluno possa desenvolver uma GUI profissional; </li></ul><ul><li>Apresentar as relações existentes entre as classes receptoras e seus métodos para tratamento dos eventos. </li></ul>
  3. 3. O que são eventos? <ul><li>Quando o usuário interage com uma interface de aplicativo final (teclado, mouse etc), isso causa o disparo de alguma ação: o evento . </li></ul><ul><li>Mais propriamente, eventos são objetos que descrevem a ação ocorrida. </li></ul><ul><li>Qualquer objeto pode ser notificado de um evento. </li></ul><ul><li>Existem vários tipos de classes de eventos para tratar as diversas categorias de ações desencadeadas pelo usuário final. </li></ul><ul><ul><li>*Incluir a instrução import java.awt.event.* . </li></ul></ul>
  4. 4. Como os eventos são processados ? <ul><li>Através de um modelo de delegação de eventos. </li></ul><ul><ul><li>Os componentes da AWT implementam rotinas de manipulação de eventos (listener) com o objetivo de receber eventos. </li></ul></ul><ul><ul><li>O componente que gera o evento é chamado de fonte do evento (event source). </li></ul></ul><ul><ul><li>O componente que trata o evento é chamado de manipulador de evento (event handler) ou ouvinte de evento (event listener). </li></ul></ul><ul><ul><li>Normalmente a manipulação do evento é delegada para uma classe separada do componente-fonte desse evento. </li></ul></ul>
  5. 5. <ul><li>Cada componente da AWT possui um conjunto de tipos de eventos a ele associado. </li></ul><ul><li>Os componentes que podem gerar eventos possuem métodos para adicionar ou remover “listeners”. </li></ul><ul><ul><li>addActionListener </li></ul></ul><ul><ul><li>removeActionListener </li></ul></ul><ul><li>A seguir são relacionados os tipos de eventos que cada componente da AWT pode gerar . </li></ul>Eventos gerados pelos componentes da AWT
  6. 6. Alguns dos e ventos gerados pelos componentes AWT/Swing Mais detalhes em: h ttp://java.sun.com/docs/books/tutorial/uiswing/events/eventsandcomponents.html .
  7. 7. <ul><li>Os tipos de eventos gerados pelos componentes da AWT são implementações da interface “listener”. </li></ul><ul><li>O nome da interface associado ao tipo de evento é definido como sendo o nome do evento, acrescido da palavra “Listener”. </li></ul><ul><ul><li>Exemplo : tipo de evento: Action </li></ul></ul><ul><ul><ul><ul><li>interface: ActionListener </li></ul></ul></ul></ul><ul><li>A seguir são descritas as interfaces dos eventos AWT. </li></ul>Interface de eventos listener AWT
  8. 8. Interface de eventos listener AWT (1)
  9. 9. Interface de eventos listener AWT Mais detalhes em: http://java.sun.com/docs/books/tutorial/uiswing/events/api.html .
  10. 10. Interface de eventos listener AWT
  11. 11. As 4 maneiras de implementar um evento <ul><li>Fazer com que a própria classe (a que contém o objeto que gera o evento) i mplemente a interface (EventoListener) ou estenda a classe abstrata (EventoAdapter) do evento. </li></ul><ul><li>Exemplo: public class MinhaClasse implements WindowListener { } ou </li></ul><ul><li>public class MinhaClasse extends WindowAdapter { }. </li></ul><ul><li>Construir uma classe externa que implemente a interface ou estenda a classe abstrata do evento. </li></ul><ul><li>Exemplo: public class MinhaClasse { … } </li></ul><ul><li>public class EventoExt implements WindowListener { } ou </li></ul><ul><li>public class EventoExt extends WindowAdapter { }. </li></ul>
  12. 12. As 4 maneiras de implementar um evento - cont. <ul><li>Construir uma classe-membro interna que implemente a interface ou estenda a classe abstrata do evento. </li></ul><ul><li>Exemplo: public class MinhaClasse { … </li></ul><ul><li>class EventoInt implements WindowListener { } ou </li></ul><ul><li>class EventoInt extends WindowAdapter { } }. </li></ul><ul><li>Construir uma classe anônima interna que implemente a interface ou a classe abstrata do evento. </li></ul><ul><li>Exemplo: public class MinhaClasse { … </li></ul><ul><li> janela.addWindowListener( new WindowAdapter( ) </li></ul><ul><li> { </li></ul><ul><li> public void windowClosing(WindowEvent e) </li></ul><ul><li>{ </li></ul><ul><li>System.exit(0); </li></ul><ul><li>} }); }. </li></ul>
  13. 13. Como escrever WindowListener <ul><li>São gerados por um objeto janela (Window) após a janela ser: aberta, fechada, iconizada, desiconizada, ativada e desativada. </li></ul><ul><li>A interface WindowListener e a classe abstrata WindowAdapter possuem os métodos a seguir : </li></ul><ul><ul><li>void windowOpened(WindowEvent) </li></ul></ul><ul><ul><ul><li>é executado assim que a janela é mostrada pela primeira vez. </li></ul></ul></ul><ul><ul><li>void windowClosing(WindowEvent) </li></ul></ul><ul><ul><ul><li>é executado assim que o usuário solicita o fechamento da janela. Para fechar a janela, usa-se o método dispose ou setVisible(false). </li></ul></ul></ul>
  14. 14. WindowListener – Estendendo <ul><li>import java.awt.*; </li></ul><ul><li>import java.awt.event.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>public class WindowListenerDemo extends WindowAdapter { </li></ul><ul><li>//A classe WindowListenerDemo estende a classe WindowAdapter para tratamento do evento </li></ul><ul><li>public static void main (String args[]) </li></ul><ul><li>{ </li></ul><ul><li>JFrame j = new JFrame(&quot;Evento de Janela&quot;); </li></ul><ul><li>j.setSize(200,200); </li></ul><ul><li>j.addWindowListener(new WindowListenerDemo()); </li></ul><ul><li>j.setVisible(true); </li></ul><ul><li>} </li></ul><ul><li>public void windowClosing(WindowEvent e) </li></ul><ul><li> { </li></ul><ul><li>System.exit(0); </li></ul><ul><li> } </li></ul><ul><li>} </li></ul>
  15. 15. WindowListener – Externa <ul><li>import java.awt.*; </li></ul><ul><li>import java.awt.event.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>public class WindowListenerDemo { </li></ul><ul><li>public static void main (String args[]) </li></ul><ul><li>{ </li></ul><ul><li>JFrame j = new JFrame(&quot;Evento de Janela&quot;); </li></ul><ul><li>j.setSize(200,200); </li></ul><ul><li>j.addWindowListener(new EventoJanela()); </li></ul><ul><li>j.setVisible(true); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>class EventoJanela extends WindowAdapter { </li></ul><ul><li> public void windowClosing(WindowEvent e) </li></ul><ul><li> { </li></ul><ul><li>System.exit(0); </li></ul><ul><li> } </li></ul><ul><li>} //classe externa de tratamento do evento </li></ul>
  16. 16. WindowListener – Interna <ul><li>import java.awt.*; </li></ul><ul><li>import java.awt.event.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>public class WindowListenerDemo extends JFrame{ </li></ul><ul><li>public static void main (String args[]) </li></ul><ul><li>{ </li></ul><ul><li>WindowListenerDemo j = new WindowListenerDemo(&quot;Evento de Janela&quot;); </li></ul><ul><li>} </li></ul><ul><li>public WindowListenerDemo(String s){ </li></ul><ul><li> setTitle(s); </li></ul><ul><li> setSize(200,200); </li></ul><ul><li> addWindowListener(new EventoJanela()); </li></ul><ul><li> setVisible(true); </li></ul><ul><li>} </li></ul><ul><li>class EventoJanela extends WindowAdapter { </li></ul><ul><li> public void windowClosing(WindowEvent e) </li></ul><ul><li> { </li></ul><ul><li>System.exit(0); </li></ul><ul><li> } </li></ul><ul><li>} //classe interna de tratamento do evento </li></ul>
  17. 17. WindowListener – Anônima <ul><li>import java.awt.*; </li></ul><ul><li>import java.awt.event.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>public class WindowListenerDemo { </li></ul><ul><li>public static void main (String args[]) </li></ul><ul><li>{ </li></ul><ul><li>JFrame j = new JFrame(&quot;Evento de Janela&quot;); </li></ul><ul><li>j.setSize(200,200); </li></ul><ul><li> j.addWindowListener (new WindowAdapter() { </li></ul><ul><li>public void windowClosing(WindowEvent e) </li></ul><ul><li>{ </li></ul><ul><li>System.exit(0); </li></ul><ul><li>} </li></ul><ul><li>}); // classe anônima interna de tratamento do evento </li></ul><ul><li>j.setVisible(true); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  18. 18. Como escrever um ActionListener <ul><li>São os eventos mais fáceis e os mais comumente implementados. </li></ul><ul><li>Implementa-se um ActionListener para responder a uma intervenção do usuário. </li></ul><ul><li>Quando o usuário clicar um botão, o duplo clique em uma lista, a escolha em um menu ou pressionar o retorno de um campo texto, o gerenciador de eventos indicará que uma ação ocorreu. </li></ul><ul><ul><li>O resultado é o envio de uma mensagem “actionPerformed” a todos os ActionListeners que estão registrados no componente-fonte. </li></ul></ul>
  19. 19. <ul><li>import java.awt.*; </li></ul><ul><li>import java.awt.event.*; </li></ul><ul><li>import javax.swing.*; </li></ul><ul><li>public class ActionListenerDemo extends JFrame { </li></ul><ul><li>private JMenuBar jmbBarraMenu; </li></ul><ul><li>private JMenu jmopcoes; </li></ul><ul><li>private JMenuItem jmiSair; </li></ul><ul><li>private JButton bArea, bPerimetro; </li></ul><ul><li>private JPanel p1; </li></ul><ul><li>private JTextField jtfBase,jtfAltura,jtfResultado; </li></ul><ul><li>private JLabel jlBase,jlAltura,jlResultado; </li></ul><ul><li>public ActionListenerDemo() { </li></ul><ul><li>jmbBarraMenu=new JMenuBar(); </li></ul><ul><li>jmopcoes=new JMenu(&quot;Opcoes&quot;); </li></ul><ul><li>jmiSair=new JMenuItem(&quot;Sair&quot;); </li></ul>ActionListener - Exemplo
  20. 20. <ul><li>jmopcoes.add(jmiSair); </li></ul><ul><li>jmbBarraMenu.add(jmopcoes); </li></ul><ul><li>setJMenuBar(jmbBarraMenu); </li></ul><ul><li>p1 = new JPanel(new GridLayout(7,4)); </li></ul><ul><li>jlBase = new JLabel(&quot;Base: &quot;); </li></ul><ul><li>jlAltura = new JLabel(&quot;Altura: &quot;); </li></ul><ul><li>jlResultado = new JLabel(&quot;Resultado: &quot;); </li></ul><ul><li>jtfBase = new JTextField(10); </li></ul><ul><li>jtfAltura = new JTextField(10); </li></ul><ul><li>jtfResultado = new JTextField(10); </li></ul><ul><li>bArea = new JButton(&quot;Area&quot;); </li></ul><ul><li>bPerimetro = new JButton(&quot;Perimetro&quot;); </li></ul><ul><li>p1.add(jlBase); </li></ul><ul><li>p1.add(jtfBase); </li></ul><ul><li>p1.add(jlAltura); </li></ul><ul><li>p1.add(jtfAltura); </li></ul>ActionListener - Exemplo cont.
  21. 21. <ul><li>p1.add(jlResultado); </li></ul><ul><li>p1.add(jtfResultado); </li></ul><ul><li>p1.add(bArea); </li></ul><ul><li>p1.add(bPerimetro); </li></ul><ul><li>getContentPane().add(p1); </li></ul><ul><li>//Início de eventos </li></ul><ul><li>jtfBase.addActionListener(new ActionListener(){ </li></ul><ul><li>public void actionPerformed(ActionEvent e) </li></ul><ul><li> { </li></ul><ul><li> jtfResultado.setText(jtfBase.getText()); </li></ul><ul><li>} </li></ul><ul><li>}); </li></ul><ul><li>jtfAltura.addMouseListener(new MouseAdapter(){ </li></ul><ul><li>public void mouseClicked(MouseEvent e) </li></ul><ul><li> { </li></ul><ul><li> jtfResultado.setText(jtfBase.getText()); </li></ul><ul><li>} </li></ul><ul><li>}); </li></ul>ActionListener - Exemplo cont.
  22. 22. <ul><li>bArea.addActionListener(new ActionListener(){ </li></ul><ul><li>public void actionPerformed(ActionEvent e) </li></ul><ul><li> { </li></ul><ul><li> jtfResultado.setText(String.valueOf( </li></ul><ul><li>Integer.parseInt(jtfBase.getText())* </li></ul><ul><li> Integer.parseInt(jtfAltura.getText()))); </li></ul><ul><li>} </li></ul><ul><li>}); </li></ul><ul><li>bPerimetro.addActionListener(new ActionListener(){ </li></ul><ul><li>public void actionPerformed(ActionEvent e) </li></ul><ul><li>{ </li></ul><ul><li> jtfResultado.setText(String.valueOf(2* </li></ul><ul><li>(Integer.parseInt(jtfBase.getText()))+ 2*(Integer.parseInt(jtfAltura.getText())))); </li></ul><ul><li>} </li></ul><ul><li>}); </li></ul>ActionListener - Exemplo cont.
  23. 23. <ul><li> jmiSair.addActionListener(new ActionListener() { </li></ul><ul><li> public void actionPerformed( ActionEvent e ) </li></ul><ul><li> { </li></ul><ul><li> System.exit( 0 ); </li></ul><ul><li> } </li></ul><ul><li>} </li></ul><ul><li>); </li></ul><ul><li>//Fim de eventos </li></ul><ul><li>} </li></ul><ul><li>public static void main(String args[]) { </li></ul><ul><li> ActionListenerDemo j = new ActionListenerDemo(); </li></ul><ul><li> j.setTitle(&quot;Eventos&quot;); </li></ul><ul><li> j.pack(); </li></ul><ul><li> j.setVisible(true); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>ActionListener - Exemplo cont.
  24. 24. Exercício <ul><li>Faça um programa em Java que implemente uma calculadora. </li></ul>
  25. 25. Bibliografia <ul><ul><li>FURGERI, Sérgio. Java 2: Ensino didático: Desenvolvendo e Implementando Aplicações – </li></ul></ul><ul><ul><li>São Paulo: Érica, 372p. 2002. </li></ul></ul><ul><ul><li>TAMASSIA, R.; GOODRICH, M.T. Estrutura de Dados e Algoritmos em Java. Bookman, 2002. </li></ul></ul><ul><ul><li>DEITEL,H.M.; DEITEL, P.J. Java: Como Programar , Bookman, 2002. </li></ul></ul>

×