POO.

Slides:



Advertisements
Apresentações semelhantes
APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS COMPONENTES GUI – PARTE I Prof. Thiago Pereira Rique
Advertisements

Programação orientada a objetos
Programação em Java Prof. Maurício Braga
1 Interface Gráfica em Java Profa. Dra. Angélica Félix de Castro.
Eventos Marco Antonio, Arquiteto de Software – TJDF Novembro/2005
Criação de telas com Swing Arquiteto de Software – TJDF
Introdução à Programação Exercício F13 - Minigame - Interação - Imagens 1º Semestre 2010 > PUCPR > Design Digital Bruno C. de Paula.
APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS COMPONENTES GUI – PARTE III Prof. Thiago Pereira Rique
APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS COMPONENTES GUI – PARTE II Prof. Thiago Pereira Rique
Criação de interfaces gráficas
14.17 Tratamento de Eventos de Teclado
14.6  Campos de texto e uma introdução ao tratamento de eventos com classes aninhadas Um usuário interage com uma GUI para indicar as tarefas que o aplicativo.
Linguagens de Programação Orientadas a Objetos
Polimorfismo e Classes Abstratas Profa
Graphical User Interface (GUI) Prof(o): Alexandre Parra.
Linguagem de Programação II
Wagner Santos C. de Jesus
Capítulo 15 Swing – Parte 1.
Capítulo 15 Swing – Parte 2.
Tutorial II: Tratando eventos em Java
Tutorial I: Criando a interface de uma aplicação em Java
Aula de reposição Prof. Grace e Ângela
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
Componentes GUI GUI – Grafical User Interface – São construídas a partir de componentes GUI chamados de controles ou widgets (windows gadgets – engenhocas.
CRIANDO OBJETOS EM JAVA
JAVA: Conceitos Iniciais
Concorrência em Java Threads em Java.
Programação Visual em Java
Java – Programação Gráfica
Programação I Aula 2 (Métodos)
Linguagem de Programação III
Thiago Francisco Bergmann-
Interface Grafica - Swing Professor Rafael Monteiro
Interface Gráfica (material da Profa. Luciana Nedel - www. inf. pucrs
COMPONENTES GUI (capítulo 11 Deitel)
OPERADORESOPERADORES SCJP – Otimize-TI. Operadores Java Resultado: Maioria das operações é um booleano ou numérico. Não podem ser sobrecarregados (Existem.
Introdução a aplicativos Java
José Pacheco A. Prado. Você pode definir diferentes cursores em seus projetos. Para isto basta utilizar a função setCursor.
LINGUAGEM DE PROGRAMAÇÃO VISUAL II
Professora Lucélia Oliveira
Jpanel e Diagramadores
Programação Orientada a Objetos Curso de Engenharia da Computação Parte 03 – Conceitos Básicos III Prof. Fabricio Mota Oliveira
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Programação Orientada a Objetos - Java
POO - II Prof.: Jean Carlo Mendes
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
POO Interface Gráfica - Swing
Introdução às Java Threads
Java Kickstart, day 2 Semelhanças com linguagem C.
Aula Prática 4 Monitoria IP/CC (~if669).
Estrutura de Controle em JAVA
Capítulo 1. Classes internas  Classe interna  Instância da classe interna  Referências na classe interna  Modificadores de membros  Classe interna.
Introdução PLB-II (Java) – Prof. Alberto  Mais componentes da GUI.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Encontrar e entrar em uma sala de chat Use a pesquisa do Lync para encontrar salas às quais você tenha acesso. Referência Rápida do Lync 2013 Chat Persistente.
Programação Prof.: Bruno Rafael de Oliveira Rodrigues.
POO - II PROF.: JEAN CARLO MENDES
Programação Gráfica em Java Introdução
UNIVERSIDADE FEDERAL DE SANTA CATARINA CTC - CENTRO TECNOLÓGICO INE - DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA DISCIPLINA DE COMPUTAÇÃO COM OBJETOS DISTRIBUÍDOS.
Roberto C. S. Pacheco Professor
Prof.: Bruno Rafael de Oliveira Rodrigues. Herança Possibilita a uma classe usar campos ou métodos definidos em outra classe. Assim a classe pai possui.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Java Módulo II Projeto Final.
PROGRAMAÇÃO ORIENTADA A OBJETOS Carlos Marques
Java Básico Lab Ruddá Beltrão | Cristian Costa.
Principais Classes Swing AWT  As classes e interfaces localizadas nos pacotes:  java.awt  javax.swing  são recursos para o desenvolvimento de GUIs.
Prof.: Jean Carlo Mendes
Elaborando Interfaces
Transcrição da apresentação:

POO

Tratamento de Eventos Eventos são a forma utilizada por Java para adicionar interatividade em interfaces gráficas. Cada vez que o usuário pressionar um botão, digitar um caracter ou movimentar o mouse, por exemplo, ocorre um evento.

Sempre que o usuário utiliza o mouse, o teclado ou outro dispositivo de entrada qualquer, o sistema operacional se encarrega de converter essas ações em eventos. Para cada evento que o sistema operacional é capaz de gerar, a aplicação deve prever um tratamento correspondente (“o que deve acontecer em resposta”). Em Java a ação resposta padrão para qualquer evento é “não fazer nada”.

Para se ter uma ação em resposta, é necessário definir qual ou quais os componentes que serão encarregados de monitorar determinado evento, reagindo ao mesmo quando este ocorrer. Dizemos que um componente capaz de perceber um evento é um componente capaz de “escutá-lo” ou “captá-lo”. Em Java, dizemos que para um componente ser capaz de perceber um evento (e tratá-lo) é necessário associar um “listener” (algo como um “ouvinte”) ao componente.

Existem 4 componentes envolvidos no processo de tratamento de eventos: Origem do evento: é um componente onde o evento é gerado. Ex.: um evento de clique do mouse pode ser originado de um botão Evento: é um objeto que representa o evento gerado. Listener ou Receptor de Evento: é um objeto responsável por “ouvir” ou “captar” a ocorrência do evento. Handler: é um método do Listener responsável por executar as ações decorrentes do evento.

OK Origem do Evento Listener Notificação do Evento contendo o objeto que representa o Evento. Handler

Como isso acontece? Em primeiro lugar Quando um evento ocorre O listener tem que se registrar no objeto origem do evento, informando que tipo de evento ele está interessado em receber. Quando um evento ocorre O listener é notificado que o evento ocorreu O objeto origem notifica o listener através da execução de um método específico, o qual recebe como parâmetro o objeto evento. Quando o listener recebe a notificação Ele executa o método handler apropriado.

Como implementar um listener? Vimos que o objeto origem de um evento notifica o listener através da execução de um método específico. Cada tipo de evento possui métodos específicos para o seu tratamento. Que métodos são esses? Como a minha classe listener sabe quais métodos ela deve implementar? Utilizamos o conceito de interface. Não confundir com interface gráfica, interface de usuário...!

Dessa forma, um listener deve implementar um certa interface. Esta interface define os métodos que serão chamados quando os eventos ocorrerem. Ex.: O evento que ocorre quando um botão é clicado é o evento (objeto) ActionEvent. Todos os listeners que estão registrados para um botão, que esperam receber a notificação de um clique do botão, devem implementar o método actionPerformed(), que será chamado pelo botão quando for clicado. Este método está definido na interface ActionListener, logo o listener deverá implementar esta interface.

public interface ActionListener{ void actionPerformed(ActionEvent e ); } public class AcoesBotao implements ActionListener{ public void actionPerfomed(ActionEvent e){ //Aqui vem o código que é executado //quando o botão for pressionado.

Como registrar um listener? Os listeners devem ser registrados com o objeto que gera o evento. Ou seja, devemos indicar quem implementa as ações para os eventos daquele componente. Cada tipo de evento tem um correspondente método para adicionar um listener. Ex.: para ActionEvent, o método é addActionListener(). JButton ok = new JButton (“Ok”); AcoesBotao botaoListener = new AcoesBotao(); ok.addActionListener(botaoListener);

Exemplo import javax.swing.*; import java.awt.event.*; //Para utilizar eventos public class TestaEventos extends JFrame implements ActionListener { //Esta classe é um listener de eventos de ação JButton but; JLabel texto; JPanel painel; int cont; public TestaEventos() { //Cria um frame com os componentes super("TestaEventos"); cont = 0; //Contador do número de cliques no botão but = new JButton("Clique aqui"); texto = new JLabel("Total de cliques: 0"); painel = new JPanel(); painel.setLayout(new BoxLayout(painel,BoxLayout.Y_AXIS)); painel.add(but); painel.add(texto); //Registra o listener para ações no botão but.addActionListener(this); // A própria classe implementa as ações this.getContentPane().add(painel); }

//Método exigido pela interface ActionListener public void actionPerformed(ActionEvent e) { cont++; texto.setText("Total de cliques: "+cont); } public static void main(String[] args){ JFrame janela = new TestaEventos(); janela.setDefaultCloseOperation( WindowConstants.DISPOSE_ON_CLOSE); janela.show();

Classe ActionEvent: Método getSource() Método getActionCommand() Retorna uma referência ao objeto que gerou o evento. Método getActionCommand() Retorna informações sobre o objeto origem do evento, por exemplo, se chamado em um botão, por default retornará o string do texto do botão. Retorna a string relacionada ao componente que foi atribuída pelo método setActionCommand(string). Podemos usar esses métodos para gerenciar eventos de mais do que um componente, com o mesmo listener.

Exemplo2: import javax.swing.*; import java.awt.event.*; public class TestaEventos2 extends JFrame implements ActionListener { JButton but1; JButton but2; JPanel painel; public TestaEventos2() { ... but1.addActionListener(this); but2.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource() == but1) setTitle("Botão 1"); else if (e.getSource() == but2) setTitle("Botão 2"); repaint(); //Redesenha a janela após mudanças

import javax.swing.*; import java.awt.event.*; public class TestaEventos2 extends JFrame implements ActionListener { JButton but1; JButton but2; JPanel painel; public TestaEventos2() { ... but1.addActionListener(this); but2.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (“Botão 1”.equals(e.getActionCommand())) setTitle("Botão 1"); else if (“Botão 2”.equals(e.getActionCommand())) setTitle("Botão 2"); repaint(); //Redesenha a janela após mudanças

Exemplos de eventos, listeners e métodos: ActionEvent ActionListener actionPerformed() FocusEvent FocusListener focusGained() focusLost() ItemEvent ItemListener itemStateChanged() KeyEvent KeyListener keyPressed() keyReleased() keyTyped() MouseEvent MouseListener mouseClicked() mouseEntered() mouseExited() mousePressed() mouseReleased() TextEvent TextListener textValueChanged()

Eventos gerados por componentes (resumo): JButton ActionEvent botão “clicado” JCheckbox ItemEvent item selecionado/desmarcado JCheckboxMenuItem ItemEvent idem JChoice ItemEvent idem JList ActionEvent duplo-clique sobre o item ItemEvent item selecionado/desmarcado JMenuItem ActionEvent item selecionado/desmarcado JScrollbar AdjustmentEvent scrollbar movimentada JTextComponent TextEvent texto alterado JTextField ActionEvent término da edição do texto

Classes Adaptadoras: Algumas das interfaces para a construção dos listeners possuem mais de um método. Ao implementar o listener, precisamos definir todos os métodos, mesmo que só estejamos interessados só em um tipo de evento. Ex.: MouseListener contém 5 métodos, e devemos implementar todos eles, mesmo que só utilizemos o método mousePressed().

Para facilitar a implementação de listeners, Java fornece um conjunto de classes adaptadoras. As classes adaptadoras (adapter) são utilizadas para que o usuário tenha que implementar apenas os métodos que ira utilizar. Estas classes já implementam a interface de interesse, mas com todos os métodos com corpo vazio (sem código). Para programar o listener, herdamos da classe adapter e sobrescrevemos apenas os métodos que desejamos utilizar!

Algumas classes adaptadoras: ComponentAdapter - ComponentListener ContainerAdapter - ContainerListener FocusAdapter - FocusListener KeyAdapter - KeyListener MouseAdapter - MouseListener MouseMotionAdapter - MouseMotionListener WindowAdapter - WindowListener ActionListener não possui classe adaptadora pois só possui um método.

Ex.: queremos um listener para o MouseListener. import java.awt.event.*; public class TestaEventos4Adaptador extends MouseAdapter{ public void mousePressed(MouseEvent e){ System.out.println("Botao pressionado"); } public void mouseReleased(MouseEvent e){ System.out.println("Botao liberado");

Classes Anônimas Internas: Uma vez criada a classe que implementa a interface ou define uma subclasse de uma classe adaptadora, esta precisa ser instanciada e o objeto registrado como listener. É possível implementar e registrar o listener em um passo só. Basta implementar o listener como uma classe anônima (sem nome) interna (uma classe definida dentro de outra classe.

Observe que se forem utilizadas classes internas anônimas, não será possível tratar múltiplos componentes. Deveremos implementar uma classe anônima para cada componente. Não aconselhável para código de tratamento que seja muito longo.

Exemplo: but.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { cont++; texto.setText("Total de cliques: "+cont); } }); janela.addWindowListener( //código para executar quando a janela é fechada new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); // fecha e sai do programa

Exemplo Menu: JMenu mFile = new JMenu("File"); JMenuItem miOpen = new JMenuItem("Open"); miOpen.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { campo.setText(e.getActionCommand()); } }); mFile.add(miOpen);

Algumas interfaces (java.awt.event.*): ActionListener - eventos de ação, que são gerados por um usuário agindo sobre um componente, como um clique em um botão. FocusListener - eventos de foco de teclado, que são gerados quando um componente, como um campo de texto, ganha ou perde o foco. ItemListener - eventos de item, que são gerados quando um item, como uma caixa de seleção, foi alterado. KeyListener - eventos de teclado, que ocorrem quando uma tecla é pressionada. MouseListener - eventos de mouse, que são gerados por cliques do mouse, um mouse entrando ou deixando uma área de um componente. MouseMotionListener - eventos de movimento de mouse, usados para controlar a movimentação do mouse sobre um componente. WindowListener - eventos de janela, que são gerados por uma janela ao ser maximizada, minimizada, movida ou fechada.

WindowListener: windowOpened(WindowEvent e) - Chamado a primeira vez que a janela é aberta. windowClosing(WindowEvent e) - Chamado quando o ícone de fecha janela é selecionado. windowClosed(WindowEvent e) - Chamado quando do fechamento de uma janela. windowActivated(WindowEvent e) - Chamado quando uma janela é ativada (clicando sobre a mesma, por exemplo). windowDeactivated(WindowEvent e) - Chamado quando uma janela é desativada (clicando sobre uma outra janela, por exemplo). windowIconified(WindowEvent e) - Chamado quando uma janela é minimizada. windowDeiconified(WindowEvent e) - Chamado quando uma janela é restaurada a partir de um ícone.

ActionListener: MouseListener: actionPerformed - Chamado quando uma ação ocorre. MouseListener: mouseClicked(MouseEvent e) - Chamado quando o botão do mouse é clicado (e solto) sobre um componente. mousePressed(MouseEvent e) - Chamado quando o botão do mouse é clicado sobre um componente. mouseReleased(MouseEvent e) - Chamado quando o botão do mouse é solto sobre um componente. mouseEntered(MouseEvent e) - Chamado quando o mouse “entra” na área de um componente. mouseExited(MouseEvent e) - Chamado quando o mouse deixa a área de um componente.

MouseMotionListener: mouseMoved(MouseEvent e) - Chamado quando o mouse se movimenta com um componente (drag) mouseDragged(MouseEvent e) - Chamado quando o mouse se movimenta com um componente (drag) enquanto o botão do mouse está pressionado KeyListener: keyTyped(KeyEvent e) - Chamado quando uma tecla do teclado é pressionada e solta keyPressed(KeyEvent e) - Chamado quando uma tecla do teclado é pressionada keyReleased(KeyEvent e) - Chamado quando uma tecla do teclado é solta

Exercícios 1) Escreva um programa em Java que implemente uma calculadora simples (com operações de adição, subtração e multiplicação) para números inteiros.