Aula 2 Even e to t s d o M ouse

Documentos relacionados
Manipulando Eventos em Java

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 4- Tratamento de Eventos em Interfaces Gráficas

Programação Java. Construção de Interface gráfica. Processo Básico: OO + Eventos. Exemplo

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 5- Tratamento de Eventos de Manipulação de textos

Introdução à Programação Gráfica em Java

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1

Manipulação de Eventos

Arquitetura de Tratamento de Eventos em Programas com GUI - Graphical User Interface

Aula 12 POO 1 Interface Gráfica no Java. Profa. Elaine Faria UFU

Tratamento de Eventos

Objetivos do Capítulo

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

MODEL-VIEW-CONTROLER. Prof. Fellipe Aleixo

Java AWT Objectos e Eventos. Label Button TextField Checkbox RadioButton Combobox

AWT Versus Swing. Java Deployment Course: Aula 5. por Jorge H C Fernandes (jhcf@di.ufpe.br) CESAR-DI-UFPE Recife, 1999

Swing. Page 1. Swing. Prof. Anderson Augustinho Uniandrade

Aplicação Linguagem de Programação Orientada a Objeto

Aplicações Gráficas com AWT

Como tratar eventos - A interface ActionListener e o método actionperformed

Componente JOptionPane Layout Null Tratamento de Eventos. Action Listener

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Nona aula

Programação Orientada a Objetos com Java. Prof. Júlio Machado

Crie um novo projeto conforme abaixo, encerrando com o botão Finalizar :

Adding User Interaction

JAVA. Marcio de Carvalho Victorino. Interface Gráfica em Java (GUI)

. Uma instância da classe JTextField gera uma instância da classe ActionEvent quando o objecto está activo e o utilizador pressiona a tecla ENTER.

Elaborando as Interfaces Aulas 43, 44 e 45

Tratamento de Exceções. LPG II Java. Tratamento de Exceções. Conceito de Exceções. Exemplo

Trabalhando com ToolStrip, ToolTip e StatusStrip

Gerenciamento de Layout

WINDOWS FORMS APPLICATION - Aplicação (Programa) que não usa a CONSOLE

(INFORMAÇÕES PARA LABORATÓRIOS VIRTUAIS) Nome do laboratório: Laboratório de Programação (INFORMAÇÕES PARA FERRAMENTA)

Aula 4. TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 2014 Marcelo Henrique dos Santos -

Interface Gráfica - Swing

Interfaces Gráficas (GUIs) em Java usando Swing Parte I - O básico

4 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

JavaFX Classe de Controle e Eventos. Prof. Vicente Paulo de Camargo

Programação Gráfica em Java.

Criação de Aplicações GUI. Java JFC / Swing

Tutorial sobre o uso da ferramenta de autoria A Ferramenta de Autoria - Célula

MÓDULO 4 SWING Parte 3

Programando em linguagem-c com o LabWindows/CVI

JavaFX Classe de Controle e Eventos. Prof. Vicente Paulo de Camargo

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em: Aulas 16, 17, e 18

Exercício 1: Criar um programa que utiliza que desenha uma interface gráfica tal como descrito na Figura 1.1.

WINDOWS FORMS APPLICATION - Aplicação (Programa) que não usa a CONSOLE

Java Avançado com acesso JDBC a Banco de Dados, Arquivos, Swing e Eventos

A configuração é bem simples e é feita através de um painel onde cada gesto é associado a um comando do NetBeans.

Natureza do Software e dos Sistemas

05 Como utilizar POO no ambiente gráfico do C#?

Tratamento de Exceções. Java Avançado. Tratamento de Exceções. Conceito de Exceções. Exemplo

COM220 Aula 17: Interface Gráfica Containers Swing

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

Notas de Aula 09: Tratamento de exceções

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Tutorial rápido CMAP TOOLS

Elaborando as Interfaces Aulas 31, 32 e 33

Transcrição:

Aula 2 Eventos do Mouse

Sumário Considerações iniciais Elementos de uma aplicação Principais tipos de eventos em Java: (WindowEvent, MouseEvent, ActionEvent, KeyEvent) Capturando os eventos: Definindo tratadores de eventos (WindowAdapter, MouseMotionListener, MouseListener, ActionListener) Adicionando tratadores de eventos em uma aplicação

Considerações iniciais Uma aplicação não é constituída somente de sua interface. É comum pensarmos que um programa ou aplicação é constituído somente de sua interface, já que é isso o que vemos. Porém, Como programadores, devemos saber que a interface é Porém, Como programadores, devemos saber que a interface é somente um dos componentes da aplicação. Ela pode ser definida como sendo o meio pelo qual o programa estabelece comunicação com o usuário (informa e recebe dados e informações).

Elementos de uma aplicação Execução Um programa (.class) O programa é o arquivo que contém as instruções (algoritmos) que quando executadas criam a aplicação Evento No dispositivo de armazenamento Aplicação (programa em execução na memória) Tratador de eventos cria interface Na memória (em execução) evento

Principais tipos de eventos Labels Panel TextFields Frame Button Labels não utilizam muitos eventos. Um dos únicos eventos que faz sentido deles gerar é o evento que avisa que o mouse está passando por cima deles. Em Java, cada componente de interface tem seu conjunto específico de eventos.

Principais tipos de eventos Labels Panel TextFields Frame Button Em Java, cada componente de interface tem seu conjunto específico de eventos. Com Panels outros eventos mais interessantes podem ser capturados: Movimento do mouse; Ação de mouse; Teclado; Re-pintura/atualização;

Principais tipos de eventos Labels Panel TextFields Frame Button Em Java, cada componente de interface tem seu conjunto específico de eventos. Como os TextFields são caixas de texto que coletam informações do usuário, faz sentido capturar deles os eventos de: Teclado; Alteração de seu conteúdo; (ou até mesmo os eventos de movimento ou ação do mouse, em alguns casos)

Principais tipos de eventos Labels Panel TextFields Frame Button Em Java, cada componente de interface tem seu conjunto específico de eventos. Os Frames são parecidos com os Painéis. Na verdade eles são painéis com bordas! Logo, além dos eventos de um painel, eles também geram eventos de janelas: Movimento do mouse; Ação de mouse; Teclado; Re-pintura/atualização; Manipulação de janela;

Principais tipos de eventos Labels Panel TextFields Frame Button Em Java, cada componente de interface tem seu conjunto específico de eventos. Já os Buttons (botões), geram eventos de ação (pressionado, solto...) e de mouse (clicado, passando por cima...)

Principais tipos de eventos Labels Panel TextFields Frame Button Logo, existem diferentes classes de eventos e tratadores de eventos, que devem ser utilizadas de acordo com os componentes e as necessidades que o programador possui. Em Java, cada componente de interface tem seu conjunto específico de eventos. Decorar todos os tipos e tratadores de eventos que o Java possui para cada objeto não faz sentido. Ao invés disso, vamos utilizar os tratadores de eventos principais.

Principais tipos de eventos Eventos de janela (WindowEvents) Gerados quando uma janela é aberta, fechada, maximizada ou minimizada, entre outros. Eventos de ações ocorridas em componentes (ActionEvents) Gerados quando um componente sofre uma ação gerada pelo usuário (seleção de um elemento ou clique do mouse em um botão, por exemplo). Eventos gerados pelo mouse (MouseEvents) Pelo movimento do mouse; Por uma ação do mouse (botão clicado, pressionado ou solto); Eventos gerados pelo teclado (KeyEvents).

Capturando eventos Aplicação (programa em execução na memória) tratador de eventos possui interface interage usuário Interação gera eventos passado para evento

Aplicação (programa em execução na memória) tratador de eventos de janela WindowListener WindowEvent possui interface interage usuário tratador de eventos de movimentos do mouse MouseMotionListener tratador de eventos de ações do mouse MouseListener tratador de eventos de ações em componentes ActionListener tratador de eventos de teclado KeyListener MouseEvent MouseEvent ActionEvent KeyEvent Interação gera eventos Porém, dependendo do tipo de evento, o tratador evento de eventos correspondente é escolhido

Aplicação (programa em execução na memória) tratador de eventos de janela WindowListener WindowEvent possui interface interage usuário tratador de eventos de movimentos do mouse MouseMotionListener tratador de eventos de ações do mouse MouseListener tratador de eventos de ações em componentes ActionListener tratador de eventos de teclado KeyListener MouseEvent MouseEvent ActionEvent KeyEvent Interação gera eventos Porém, dependendo do tipo de evento, o tratador evento de eventos correspondente é escolhido Clique em um dos tipos para obter mais detalhes!

Tipos de tratadores de eventos Logo, o Java possui 5 tipos básicos de tratadores de eventos que você pode utilizar em seus programas: WindowListener - eventos de janelas MouseListener - eventos de mouse (clique) MouseMotionListener - eventos de movimento de mouse ActionListener - eventos de ação (geralmente gerados por botões) KeyListener - eventos gerados pelo teclado Para cada um desses tipos o Java oferece uma Classe ou Interface que você pode utilizar em seus programas. Cada um deles possui uma série diferente de métodos, que tratam eventos específicos.

Tratando eventos Os eventos não são tratados automaticamente. Para fazer isso você deve seguir os seguintes passos: Para cada componente de interface que você criou (janela, botão, painel, caixa de texto...), decida quais são os eventos que você quer tratar (cada componente pode gerar um ou mais tipos de eventos); Após, defina uma classe adicional no seu programa que seja capaz de tratar cada um desses eventos. Essa classe, tratadora de eventos, deve ser uma classe filha de uma das classes tratadoras de eventos vistas anteriormente (WindowListener, MouseListener, MouseMotionListener, ActionListener ou KeyListener); Finalmente, crie objetos que sejam do tipo da classe tratadora de eventos que você definiu e depois diga para cada componente, qual é o objeto que trata seus eventos.

Tipos de tratadores de eventos: Para capturar e tratar os eventos você deve criar objetos de manipulação de eventos. Para cada tipo de evento existe uma classe Java específica para tratá-lo. Você só tem que definir uma classe adicional em seu programa que seja filha da classe Java que trata o tipo de evento que você deseja manipular. Para os eventos vistos, as classes-pai que você pode utilizar são: Eventos de janela (WindowEvent): WindowListener Eventos de Ação (ActionEvent): ActionListener Eventos de mouse (MouseEvent): MouseMotionListener MouseListener para movimentos do mouse para demais ações do mouse Eventos de teclado (KeyEvent): KeyListener

Exemplo Para exemplificar, vamos criar um tratador de eventos de janela e adicioná-lo à janela da nossa aplicação: O primeiro passo é criar uma classe que defina o tratador de eventos que queremos. Isso é feito através da adição de uma nova classe no final do programa fonte da nossa aplicação. Vamos então criar uma classe chamada de, por exemplo, TratadorDeEventos, e vamos estende-la de WindowAdapter: class TratadorDeEventos extends WindowAdapter // filha do tratador de eventos de janela Depois, dentro dela, declare e implemente todos os métodos que tratam os eventos que você deseja capturar (neste caso, somente o evento de fechar janela): { // abre a classe public void windowclosing(windowevent e) // método chamado quando o { // usuário clica o botão fechar System.exit(0); // Esse comando faz terminar o programa // Fecha a classe

Exemplo Cada evento gerado chama um método diferente (e correspondente) para tratálo. Todos os eventos de fechar janela, por exemplo, chamam o mesmo método: windowclosing(). Isso significa que, para cada evento que você quer tratar, você deve descobrir qual é o método que o trata e implementá-lo. Cada uma das classes-pai (tratadoras de eventos) possui seu conjunto de métodos específico. Clique em uma delas a seguir para descobrir quais são os métodos que elas oferecem e quais eventos cada um deles trata: WindowListener ou WindowAdapter MouseListener ou MouseAdapter MouseMotionListener ou MouseMotionAdapter ActionListener Obs: A diferença entre um Listener e um Adapter é que o primeiro é uma interface, e você deve implementar (implements) todos os seus métodos. Já o segundo é uma classe-pai pronta, e você pode redefinir somente os métodos para os eventos que lhe interessam

Exemplo Depois de ter criado um tratador de eventos, falta dizer para o Java que os objetos criados a partir dessa classe é que vão tratar os eventos. Para fazer isso, no programa principal crie um objeto do tipo TratadorDeEventos (que é a classe definida por nós para tratar eventos de janela) e depois adicione esse tratador de eventos ao objeto janela de sua aplicação (no caso isso é feito através do método addwindowlistener(): public class VImagem2 // Classe que define o programa principal { public static void main(string args[]) { Janela minhajanela = new Janela(); // cria objeto tratador de eventos: TratadorDeEventos tratador = new TratadorDeEventos(); // Adiciona o tratador de eventos à janela: minhajanela.addwindowlistener addwindowlistener(tratador); minhajanela.show();

Métodos de adição de tratadores de eventos Para cada componente que você deseja tratar eventos, você deve criar e adicionar o tratador de eventos correspondente. Cada tipo de adaptador possui o seu método de adição correspondente: addwindowlistener(tratador_de_eventos) adiciona um tratador de eventos de janela; addactionlistener(tratador_de_eventos) adiciona um tratador de eventos gerados por ações em componentes (geralmente utilizado em botões); addmouselistener(tratador_de_eventos) adiciona um tratador de eventos gerados pelo movimento do mouse; addmousemotionlistener(tratador_de_eventos) adiciona um tratador de eventos gerados por ações do mouse; addkeylistener(tratador_de_eventos) adiciona um tratador de eventos gerados pelo teclado;

Exemplo de fonte de aplicação que trata eventos: public class Aplicação{ public static void main(string argumentos[]){ Janela jan = new Janela(); TratEventosJan trat = new TratEventosJan(); jan.addwindowlistener(trateventos()); jan.show(); A primeira classe é a que define a aplicação class Janela extends Frame{ public Janela(){ setbackground(color.blue); add( Center, new Label( Janela da aplicação )); class TratEventosJan extends WindowAdapter{ public void windowclosing(windowevent evento){ System.exit(0); A segunda classe é a que define a interface (o tipo de janela) da aplicação A última classe é a que define o tratador de eventos de janela da aplicação

Exemplo de fonte de aplicação que trata eventos: public class Aplicação{ public static void main(string argumentos[]){ Janela jan = new Janela(); TratEventosJan trat = new TratEventosJan(); jan.addwindowlistener(trat); jan.show(); A primeira classe é responsável por criar a janela da aplicação. class Janela extends Frame{ public Janela(){ setbackground(color.blue); add( Center, new Label( Janela da aplicação )); class TratEventosJan extends WindowAdapter{ public void windowclosing(windowevent evento){ System.exit(0); A janela é criada de acordo com a classe de janela definida!

Exemplo de fonte de aplicação que trata eventos: public class Aplicação{ public static void main(string argumentos[]){ Janela jan = new Janela(); TratEventosJan trat = new TratEventosJan(); jan.addwindowlistener(trat); jan.show(); Em seguida, é criado o objeto tratador de eventos. class Janela extends Frame{ public Janela(){ setbackground(color.blue); add( Center, new Label( Janela da aplicação )); trat (tratador de eventos) class TratEventosJan extends WindowAdapter{ public void windowclosing(windowevent evento){ System.exit(0); Ele é criado de acordo com a classe definida para tratar eventos!

Exemplo de fonte de aplicação que trata eventos: public class Aplicação{ public static void main(string argumentos[]){ Janela jan = new Janela(); TratEventosJan trat = new TratEventosJan(); jan.addwindowlistener(trat); jan.show(); Finalmente, o tratador de eventos é adicionado à janela: class Janela extends Frame{ public Janela(){ setbackground(color.blue); add( Center, new Label( Janela da aplicação )); trat (tratador de eventos) class TratEventosJan extends WindowAdapter{ public void windowclosing(windowevent evento){ System.exit(0); Assim, todo evento de janela gerado nesta janela é capturado e tratado pelo objeto tratador de eventos.

Neste tutorial você... Aprendeu quais são os elementos de uma Aplicação: o programa, a janela e os tratadores de evento; Aprendeu quais são os principais tipos de eventos em Java: WindowEvent, MouseEvent, ActionEvent, KeyEvent; Aprendeu a definir classes e objetos que podem ser utilizados nas suas aplicações a fim de capturar e tratar eventos. Para ver um exemplo de aplicação que define e utiliza tratadores de eventos clique aqui!

Eventos gerados por janelas Toda janela gera um evento de janela (WindowEvent) quando sofre uma ação do usuário. Quando a janela surge, ela gera um evento do tipo windowopened(windowevent ev) voltar Esses são os métodos que você tem que declarar/implementar para capturar eventos de janela em seu programa Iniciar Visualizador de imagens 19:30 Quando o usuário manda minimizar a janela, ela gera um evento do tipo windowiconified(windowevent ev) Quando o usuário manda maximizar a janela, ela gera um evento do tipo windowdeiconified(windowevent ev) Quando o usuário manda fechar a janela, ela gera um evento do tipo windowclosing(windowevent ev)

Eventos gerados por componentes Toda interação com um componente de interface gera um evento de ação (ActionEvent). Esses eventos são tratados por uma ActionListener. A ActionListener só possui um método: o actionperformed(): Quando um botão é pressionado ele gera um evento do tipo: actionperformed(activeevent ev) Você pode identificar quem foi que gerou o evento através do método: ev.getactioncommand() mais detalhes em ActionEvent! voltar

Eventos gerados pelo mouse Os eventos gerados por alguma ação do mouse (clicar um botão, por exemplo), são tratados pela classe MouseListener ou MouseAdapter e suas classes-filhas, definidas pelo programador. Nestas classes, você deve utilizar os seguintes métodos: mouseclicked(mouseevent ev) quando um botão do mouse é clicado; mouseentered(mouseevent ev) quando o mouse entra em um componente (passa por cima); mouseexited(mouseevent ev) quando o mouse sai de um componente; mousepressed(mouseevent ev) quando um botão do mouse é pressionado; mousereleased(mouseevent ev) quando um botão do mouse é solto. voltar

Eventos gerados pelo movimento do mouse Os eventos gerados por algum movimento do mouse são tratados pela classe MouseMotionListener ou MouseMotionAdapter e suas classesfilhas, definidas pelo programador. Nestas classes, você deve utilizar os seguintes métodos: mousemoved(mouseevent ev) quando o mouse é movido dentro de um componente ou janela; mousedraged(mouseevent ev) quando o mouse é movido com um botão pressionado dentro de um componente ou janela (para implementar o recurso arrastar-e-soltar); voltar

WindowEvent (evento de janela) O Evento (objeto) passado ao tratador de eventos de janela é o WindowEvent. Dentro de um método que trata os eventos de janela, você pode utilizar esse objeto para descobrir algumas informações sobre o evento. Alguns de seus métodos são: getwindow() retorna a janela que gerou o evento; paramstring() retorna uma string que identifica o evento; getsource() Retorna o objeto que gerou esse evento. voltar

MouseEvent (evento de mouse) O Evento (objeto) passado a qualquer tratador de eventos de mouse é o mesmo: MouseEvent. Dentro de um método que trata o evento de mouse você pode utilizar esse objeto para descobrir algumas informações sobre o evento. Alguns de seus métodos são: getx() retorna a coordenada x (coluna) onde o evento ocorreu; gety() retorna a coordenada y (linha) onde o evento ocorreu; paramstring() retorna uma string que identifica o evento; source é uma referência ao objeto que gerou o evento do mouse. voltar

ActionEvent (evento de Ação em um componente) O Evento (objeto) passado a função de tratamento de eventos de ação é o ActionEvent. Dentro de um método que trata o evento você pode utilizar esse objeto para descobrir algumas informações sobre ele. Alguns de seus métodos são: getactioncommand() retorna o nome do comando gerado (geralmente o nome do componente que gerou esse evento); getmodifiers() Indica se alguma tecla especial (SHIFT, CONTROL...) estava pressionada quando o evento ocorreu; paramstring() retorna uma string que identifica o evento; getsource() Retorna o objeto que gerou esse evento. Referência: http://www.leandro.wives.nom.br/java/tutorial2.ppt voltar