Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

<p>Disciplina: Aplicação de Linguagem de</p><p>Programação Orientada a Objetos (ALPOO)</p><p>Prof. Saulo - saulo.silva@docente.unip.br 1</p><p>mailto:fernandomariani@gmail.com</p><p>Tratamento de eventos</p><p>2</p><p>• Além dos módulos de interface com o usuário e</p><p>regras de negócios, a grande maioria dos programas</p><p>de suporte a sistemas de informações gerenciais</p><p>ainda contém um módulo de persistência (também</p><p>chamado de armazenamento/recuperação de dados).</p><p>• Estes três módulos são normalmente organizados em</p><p>forma de camadas, conforme o esquema abaixo:</p><p>3</p><p>• Em um esquema de camadas, a camada de interface</p><p>interage apenas com as regras de negócio, e as</p><p>regras de negócio interagem com a interface e com a</p><p>camada de persistência.</p><p>4</p><p>Utilização de Eventos</p><p>5</p><p>• De modo diferente de um programa com interface</p><p>baseada em texto (do tipo que usa comandos</p><p>System.out.println e IO.readStr()), programas</p><p>com interface gráfica oferecem uma vasta quantidade</p><p>de alternativas de entrada de dados ao usuário.</p><p>• O usuário pode adotar um dentre vários caminhos</p><p>possíveis e o programador não consegue controlar o</p><p>fluxo da mesma forma que o programa com interface</p><p>textual.</p><p>• A solução usualmente adotada em programas</p><p>modernos é construir a interação por meio de</p><p>tratamento de eventos.</p><p>Componentes de um programa baseado em eventos</p><p>6</p><p>Funcionamento</p><p>7</p><p>Componentes visuais e eventos que produzem</p><p>8</p><p>Eventos e seus observadores</p><p>9</p><p>Observadores e seus métodos de notificação</p><p>10</p><p>Principais tipos de eventos</p><p>✓ Labels</p><p>✓ Não utilizam muitos eventos</p><p>✓ Um dos únicos eventos que faz sentido dele</p><p>gerar é o evento que avisa que o mouse está</p><p>passando por cima do label</p><p>11</p><p>Principais tipos de eventos</p><p>✓ Panels</p><p>✓ Com Panels outros eventos mais interessantes</p><p>podem ser capturados:</p><p>✓ Movimento do mouse;</p><p>✓ Ação de mouse;</p><p>✓ Teclado;</p><p>✓ Re-pintura/atualização;</p><p>12</p><p>Principais tipos de eventos</p><p>✓ TextFields</p><p>✓ Como os TextFields são caixas de texto que coletam</p><p>informações do usuário, faz sentido capturar deles</p><p>os eventos de:</p><p>✓ Teclado;</p><p>✓ Alteração de seu conteúdo;</p><p>✓ Em alguns casos até movimentos ou ação do</p><p>mouse</p><p>13</p><p>Principais tipos de eventos</p><p>✓ Frame</p><p>✓ Os Frames são parecidos com os Painéis. Na</p><p>verdade eles são painéis com bordas! Logo, além</p><p>dos eventos de um painel, eles também geram</p><p>eventos de janelas:</p><p>✓ Movimento do mouse;</p><p>✓ Ação do mouse;</p><p>✓ Teclado;</p><p>✓ Re-pintura/atualização;</p><p>✓ Manipulação de janela;</p><p>14</p><p>Principais tipos de eventos</p><p>✓ Button</p><p>✓ Geram eventos de ação</p><p>✓ pressionado;</p><p>✓ solto;</p><p>✓ Geram também eventos de mouse</p><p>✓ Clicando;</p><p>✓ Passando por cima;</p><p>15</p><p>Principais tipos de eventos</p><p>16</p><p>✓ Em java, cada componente de interface tem seu</p><p>conjunto específico de eventos</p><p>✓ Existem diversas classes de eventos e tratadores de</p><p>eventos, que devem ser utilizadas de acordo com o</p><p>componente e com a necessidade que o</p><p>programador possui.</p><p>Principais tipos de eventos</p><p>17</p><p>• Eventos de janela (WindowEvents)</p><p>Gerados quando uma janela é aberta, fechada, maximizada</p><p>ou minimizada, entre outros.</p><p>•Eventos de ações ocorridas em componentes</p><p>(ActionEvents)</p><p>Gerados quando um componente sofre uma ação gerada</p><p>pelo usuário (seleção de um elemento ou clique do mouse</p><p>em um botão, por exemplo).</p><p>• Eventos gerados pelo mouse (MouseEvents)</p><p>• Pelo movimento do mouse;</p><p>• Por uma ação do mouse (botão clicado,</p><p>pressionado ou solto);</p><p>• Eventos gerados pelo teclado (KeyEvents).</p><p>Funcionamento dos eventos</p><p>18</p><p>Funcionamento dos eventos</p><p>19</p><p>Tratamento de eventos</p><p>20</p><p>✓ Serão apresentados 5 ouvintes e seus respectivos tratadores de</p><p>eventos disponibilizados pelo Java:</p><p>✓ WindowListener - eventos de janelas</p><p>✓ MouseListener - eventos de mouse (clique)</p><p>✓ MouseMotionListener - eventos de movimento de mouse</p><p>✓ ActionListener - eventos de ação (geralmente gerados por</p><p>botões)</p><p>✓ KeyListener - eventos gerados pelo teclado</p><p>✓ Para cada um desses tipos o Java oferece uma Classe ou</p><p>Interface que pode ser utilizada em programas.</p><p>✓ Cada um deles possui uma série diferente de métodos, que</p><p>tratam eventos específicos.</p><p>Tratamento de eventos</p><p>21</p><p>✓ Os eventos não são tratados automaticamente.</p><p>✓ Para cada componente de interface criado (janela, botão, painel,</p><p>caixa de texto...), decida quais são os eventos que devem ser</p><p>tratados (cada componente pode gerar um ou mais tipos de</p><p>eventos);</p><p>✓ Após, defina uma classe adicional no programa que seja capaz</p><p>de tratar cada um desses eventos. Essa classe, tratadora de</p><p>eventos, deve ser uma classe filha de uma das classes</p><p>tratadoras de eventos vistas anteriormente (WindowListener,</p><p>MouseListener, MouseMotionListener, ActionListener ou</p><p>KeyListener);</p><p>✓ Finalmente, crie objetos que sejam do tipo da classe tratadora</p><p>de eventos que você definiu e depois diga para cada</p><p>componente, qual é o objeto que trata seus eventos.</p><p>Tratamento de eventos</p><p>22</p><p>Para capturar e tratar os eventos devem ser criados objetos de</p><p>manipulação de eventos. Para cada tipo de evento existe uma</p><p>classe Java específica para tratá-lo.</p><p>Para os eventos, as classes-pai que podem ser utilizadas são:</p><p>✓ Eventos de janela (WindowEvent): WindowListener</p><p>✓ Eventos de Ação (ActionEvent): ActionListener</p><p>✓ Eventos de mouse (MouseEvent):</p><p>✓ MouseMotionListener: para movimentos do mouse</p><p>✓ MouseListener: para demais ações do mouse</p><p>✓ Eventos de teclado (KeyEvent): KeyListener</p><p>Tratamento de eventos</p><p>23</p><p>✓ Cada evento gerado chama um método diferente para tratá-lo.</p><p>✓ Todos os eventos para fechar uma janela, chamam o mesmo</p><p>método: windowClosing().</p><p>✓ Cada uma das classes-pai (tratadoras de eventos) possui seu</p><p>conjunto de métodos específicos.</p><p>✓ WindowListener ou WindowAdapter</p><p>✓ MouseListener ou MouseAdapter</p><p>✓ MouseMotionListener ou MouseMotionAdapter</p><p>✓ ActionListener</p><p>✓ Obs: A diferença entre um Listener e um Adapter é que o</p><p>primeiro é uma interface, e deve ser implementada para</p><p>todos os seus métodos. Já o segundo é uma classepai</p><p>pronta, e pode ser redefinida somente os métodos para os</p><p>eventos que interessam</p><p>Métodos de adição de tratadores de</p><p>eventos</p><p>24</p><p>Para cada componente, deve ser criado e adicionado o tratador de</p><p>eventos correspondente. Cada tipo de adaptador possui o seu</p><p>método:</p><p>✓ addWindowListener(tratador_de_eventos) adiciona um tratador</p><p>de eventos de janela;</p><p>✓ addActionListener(tratador_de_eventos) adiciona um tratador de</p><p>eventos gerados por ações em componentes (geralmente</p><p>utilizado em botões);</p><p>✓ addMouseListener(tratador_de_eventos) adiciona um tratador de</p><p>eventos gerados pelo movimento do mouse;</p><p>✓ addMouseMotionListener(tratador_de_eventos) adiciona um</p><p>tratador de eventos gerados por ações do mouse;</p><p>✓ addKeyListener(tratador_de_eventos) adiciona um tratador de</p><p>✓ eventos gerados pelo teclado;</p><p>Métodos de adição de tratadores de</p><p>eventos</p><p>25</p><p>Eventos gerados pelo mouse</p><p>26</p><p>Os eventos gerados por alguma ação do mouse, são tratados pela</p><p>classe MouseListener ou MouseAdapter e suas classes-filhas:</p><p>✓ mouseClicked(MouseEvent ev) quando um botão do mouse é</p><p>clicado;</p><p>✓mouseEntered(MouseEvent ev) quando o mouse entra em um</p><p>componente (passa por cima);</p><p>✓mouseExited(MouseEvent ev) quando o mouse sai de um</p><p>componente;</p><p>✓mousePressed(MouseEvent ev) quando um botão do mouse é</p><p>pressionado;</p><p>✓mouseReleased(MouseEvent ev) quando um botão do mouse é</p><p>solto.</p><p>✓ mouseMoved(MouseEvent ev) quando o mouse é movido dentro</p><p>de um componente ou janela;</p><p>✓ mouseDraged(MouseEvent ev) quando o mouse é movido com</p><p>um botão pressionado dentro de um componente ou janela (para</p><p>implementar o recurso arrastar-e-soltar);</p><p>Eventos gerados pelo mouse</p><p>27</p><p>✓ Interface MouseListener</p><p>✓ Métodos</p><p>✓ mousePressed</p><p>✓ mouseReleased</p><p>✓ mouseEntered</p><p>✓ mouseExited</p><p>✓ mouseClicked</p><p>✓ Classe adaptadora: MouseAdapter</p><p>✓ Interface MouseMotionListener</p><p>✓ Métodos</p><p>✓ mouseDragged</p><p>✓ mouseMoved</p><p>✓ Classe adaptadora: MouseMotionAdapter</p><p>Eventos gerados pela Janela</p><p>28</p><p>Os eventos gerados por alguma ações na janela, são tratados pela</p><p>classe WindowListener ou WindowAdapter.</p><p>Os métodos que devem</p><p>ser implementados são:</p><p>✓ windowActivated(WindowEvent ev) Invocado quando a janela se</p><p>torna ativa</p><p>✓ windowClosed(WindowEvent ev) Invocado quando a janela é</p><p>eliminada</p><p>✓ windowClosing(WindowEvent ev) Invocado quando o usuário</p><p>pressiona o botão de fechar a janela a partir do menu do SO.</p><p>✓ windowDeactivated(WindowEvent ev) Invocado quando a janela</p><p>deixa de ser a janela ativa.</p><p>✓ windowDeiconified(WindowEvent ev) Invocado quando a janela</p><p>estava minimizada e volta ao estado normal</p><p>✓ windowIconified(WindowEvent ev) Invocado quando a janela é</p><p>minimizada</p><p>✓ windowOpened(WindowEvent ev) Invocado a primeira vez que a</p><p>tela se torna visível</p><p>Eventos gerados pelo teclado</p><p>29</p><p>Os eventos gerados por alguma ações na janela, são tratados pela</p><p>classe KeyListener ou KeyAdapter.</p><p>Os métodos que devem ser implementados são:</p><p>✓ KeyPressed(KeyEvent e): Tecla pressionada</p><p>✓ KeyReleased(KeyEvent e): Tecla solta</p><p>✓ KeyTyped(KeyEvent e): Caracter digitado</p>

Mais conteúdos dessa disciplina