GUI
Eventos
Mario Jorge Pereira
mariojp@gmail.com
Eventos
Eventos em Java são objetos
Subclasses de java.util.EventObject
Todo evento tem um objeto que é sua fonte
Object f...
Fontes, Eventos, Ouvintes
Exemplo (1/3)
... (não esqueça dos imports)
public class Janela extends JFrame {
private JButton b1 = new JButton("Ligar")...
Exemplo (2/3)
public class OuvinteBotao implements ActionListener{
public void actionPerformed(ActionEvent e) {
System.out...
Exemplo (3/3)
...
public class OuvinteMouse implements MouseListener {
public void mouseClicked(MouseEvent e) {
System.out...
Tipos de Eventos
Herdam da classe java.awt.event.AWTEvent, são
divididos em categorias (java.awt.event) e os
principais sã...
Listeners
Cada evento tem uma interface Listener correspondente
ActionEvent: ActionListener
MouseEvent: MouseListener e
Mo...
Fonte x Listener
Quando ocorre um evento todos os listeners registrados
são notificados
Para registrar um listener na font...
Implementando um Listener
Em uma classe declare implementar os listeners dos
eventos que voce vai escutar
public class Meu...
Listeners e métodos
Cada listener possui métodos que você deve implementar:
public void actionPerformed(ActionEvent evt)
C...
Exemplo (1/3)
... (não esqueça dos imports)
public class Janela extends JFrame implements
WindowListener{
private JButton ...
Exemplo (2/3)
public void windowOpened(WindowEvent e) {
System.out.println("Janela aberta!"); }
public void windowClosing(...
Exemplo (3/3)
...
public class OuvinteMouse implements MouseListener {
...
public void mouseEntered(MouseEvent e) {
System...
Eventos, Listeners e Métodos
Adapters
Alguns listeners possuem uma classe Adapter
Implementa todos os métodos, sem instruções, ou seja,
implementação v...
Tratamento de eventos com classes internas
É comum utilizar-se classes anônimas no tratamento de
eventos de uma GUI
Uma da...
Exercício
1. Implemente os eventos para a aplicação
Copiar deve acrescentar o texto do JTextField
noJEditorPane e limpar o...
Upcoming SlideShare
Loading in...5
×

GUI - Eventos

717

Published on

Introdução ao uso de Eventos em aplicações gráficas em java utilizando Swing.

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
717
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
29
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

GUI - Eventos

  1. 1. GUI Eventos Mario Jorge Pereira mariojp@gmail.com
  2. 2. Eventos Eventos em Java são objetos Subclasses de java.util.EventObject Todo evento tem um objeto que é sua fonte Object fonte = evento.getSource(); Métodos de ouvintes (listeners) que desejam tratar eventos, recebem eventos como argumento public void eventoOcorreu(EventObject evento) { Object fonte = evento.getSource(); System.out.println("" +evento+ " em " +fonte); } Ouvintes precisam ser registrados nas fontes Quando ocorre um evento, um método de todos os ouvintes registrados é chamado e evento é passado como argumento
  3. 3. Fontes, Eventos, Ouvintes
  4. 4. Exemplo (1/3) ... (não esqueça dos imports) public class Janela extends JFrame { private JButton b1 = new JButton("Ligar"); private JButton b2 = new JButton("Desligar"); public Janela(String nome) { super(nome); this.setLayout(new GridLayout(2,1)); this.add(b1); this.add(b2); OuvinteBotao ouvinteBotao = new OuvinteBotao(); OuvinteMouse ouvinteMouse = new OuvinteMouse(); b1.addActionListener(ouvinteBotao); b2.addActionListener(ouvinteBotao); b2.addMouseListener(ouvinteMouse); this.setSize(400,350); this.setVisible(true); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_C LOSE); } ... (crie um main para iniciar a janela)
  5. 5. Exemplo (2/3) public class OuvinteBotao implements ActionListener{ public void actionPerformed(ActionEvent e) { System.out.println("tarefa do botao"); } }
  6. 6. Exemplo (3/3) ... public class OuvinteMouse implements MouseListener { public void mouseClicked(MouseEvent e) { System.out.println("clicou o mouse!"); } public void mousePressed(MouseEvent e) { System.out.println("pressionou o mouse!"); } public void mouseReleased(MouseEvent e) { System.out.println("soltou o mouse!"); } public void mouseEntered(MouseEvent e) { System.out.println("mouse sobre a área!"); } public void mouseExited(MouseEvent e) { System.out.println("mouse saiu da área!"); } }
  7. 7. Tipos de Eventos Herdam da classe java.awt.event.AWTEvent, são divididos em categorias (java.awt.event) e os principais são: ActionEvent (componentes de ação) MouseEvent (componentes afetados pelo mouse) ItemEvent (checkboxes radios e outros) AdjustmentEvent (scrollbars) TextEvent (componentes de texto) WindowEvent (janelas) FocusEvent (componentes em geral) “...Event”
  8. 8. Listeners Cada evento tem uma interface Listener correspondente ActionEvent: ActionListener MouseEvent: MouseListener e MouseMotionListener ItemEvent: ItemListener AdjustmentEvent: AdjustmentListener TextEvent: TextListener WindowEvent: WindowListener FocusEvent: FocusListener “...Event”: “...Listener”
  9. 9. Fonte x Listener Quando ocorre um evento todos os listeners registrados são notificados Para registrar um listener na fonte: fonte.add<Listener>(referência_para_listener); Exemplo: JButton button = new JButton("Fonte"); ActionListener ouvinte1 = new OuvinteDoBotao(); MouseListener ouvinte2 = new OuvinteDeCliques(); button.addActionListener(ouvinte1); button.addMouseListener(ouvinte2); Um objeto pode ser fonte e listener ao mesmo tempo this.addWindowListener(this);
  10. 10. Implementando um Listener Em uma classe declare implementar os listeners dos eventos que voce vai escutar public class MeuListener implements ActionListener, ItemListener { ... } Implemente os métodos da interface public void actionPerformed(ActionEvent e) {...} public void itemStateChanged(ItemEvent e) {...} DICAS: Todos os métodos são public void Todos recebem o tipo de evento correspondente ao tipo do listener como argumento
  11. 11. Listeners e métodos Cada listener possui métodos que você deve implementar: public void actionPerformed(ActionEvent evt) Cada evento possui métodos que você pode chamar dentro do listener para obter as informações desejadas: String comando = actionEvent.getActionCommand(); Componente (fonte) possui métodos que você pode chamar para obter informações sobre ele: Object fonte = evento.getSource(); if (fonte instanceof JButton) { JButton b = (JButton) fonte; String label = b.getLabel(); }
  12. 12. Exemplo (1/3) ... (não esqueça dos imports) public class Janela extends JFrame implements WindowListener{ private JButton b1 = new JButton("Click!"); public Janela(String nome) { super(nome); this.setSize(400,300); this.setLayout(null); this.add(b1); b1.setBounds(10, 100, 150, 50); OuvinteMouse ouvinteMouse = new OuvinteMouse(); b1.addMouseListener(ouvinteMouse); this.addWindowListener(this); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_C LOSE); this.setVisible(true); }
  13. 13. Exemplo (2/3) public void windowOpened(WindowEvent e) { System.out.println("Janela aberta!"); } public void windowClosing(WindowEvent e) { System.out.println("Fechado Janela!"); } public void windowClosed(WindowEvent e) { System.out.println("Janela Fechada!"); } public void windowIconified(WindowEvent e) { System.out.println("Janela minimizada!"); } public void windowDeiconified(WindowEvent e) { System.out.println("Janela Restaurada!"); } public void windowActivated(WindowEvent e) { System.out.println("Janela Ativada!"); } public void windowDeactivated(WindowEvent e) { System.out.println("Janela Desativada!"); } ... (crie um main para iniciar a janela)
  14. 14. Exemplo (3/3) ... public class OuvinteMouse implements MouseListener { ... public void mouseEntered(MouseEvent e) { System.out.println("mouse sobre o botao!"); Object fonte = e.getSource(); if (fonte instanceof JButton) { JButton b = (JButton) fonte; if (b.getLocation().getX() == 10){ b.setLocation(200, 100); b.setText("Tente novamente!"); }else{ b.setLocation(10, 100); b.setText("Click!"); } } } ... }
  15. 15. Eventos, Listeners e Métodos
  16. 16. Adapters Alguns listeners possuem uma classe Adapter Implementa todos os métodos, sem instruções, ou seja, implementação vazia: {} Existem apenas para listeners que têm mais de um método Úteis quando um Ouvinte precisa implementar apenas um dentre vários métodos de um Listener Pode sobrepor a implementação desejada do método do Adapter e não precisa se preocupar com os outros Não são úteis em ouvintes que já estendem outras classes ou quando implementam diferentes listeners Alguns Adapters: MouseListener: MouseAdapter WindowListener: WindowAdapter “...Listener”: “...Adapter”
  17. 17. Tratamento de eventos com classes internas É comum utilizar-se classes anônimas no tratamento de eventos de uma GUI Uma das grandes vantagens é a possibilidade de enxergar os componentes que geralmente são atributos private Exemplo: b1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tf.setText(e.getActionCommand()); } } ); b2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tf.setText(e.getActionCommand()); } } ); ( ... )
  18. 18. Exercício 1. Implemente os eventos para a aplicação Copiar deve acrescentar o texto do JTextField noJEditorPane e limpar o JTextField Limpar deve limpar o JTextField Sair deve sair do programa 2. Implemente os botões como itens do menu "Operações" Use JMenuBar, JMenu e JMenuItem 3. Implemente um JToggleButton "desenhar/escrever" que troque o JTextPane por um JCanvas e permita rabiscar com o mouse (use MouseEvent)
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×