GUI - Eventos
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

GUI - Eventos

on

  • 683 views

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

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

Statistics

Views

Total Views
683
Views on SlideShare
586
Embed Views
97

Actions

Likes
1
Downloads
25
Comments
0

2 Embeds 97

http://domore.ws 68
http://www.moodle.ufba.br 29

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

GUI - Eventos Presentation Transcript

  • 1. GUI Eventos Mario Jorge Pereira mariojp@gmail.com
  • 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. Fontes, Eventos, Ouvintes
  • 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. Exemplo (2/3) public class OuvinteBotao implements ActionListener{ public void actionPerformed(ActionEvent e) { System.out.println("tarefa do botao"); } }
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Eventos, Listeners e Métodos
  • 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. 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. 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)