adding user interactionadding user interaction if62c - fundamentos de programa o 1/2014 professores...

22
Adding User Interaction if62c - Fundamentos de Programação 1/2014 professores Danillo Leal Belmonte ([email protected]) e Robinson Vida Noronha ([email protected]) 1 Monday, August 11, 2014

Upload: others

Post on 24-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Adding User Interaction

if62c - Fundamentos de Programação1/2014

professores Danillo Leal Belmonte ([email protected]) eRobinson Vida Noronha ([email protected])

1Monday, August 11, 2014

Page 2: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Estratégias

Adicionar ações isoladas aos componentes.

Criar classes específicas de ações e enviar instâncias dessas classes aos componentes.

2Monday, August 11, 2014

Page 3: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Estratégias Isoladas em Componentes

3Monday, August 11, 2014

Page 4: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

O Listener do Mouseimport javax.swing.JPanel;import java.awt.*;import java.awt.event.*;import javax.swing.*;

public class MeuPainel extends JPanel {

public MeuPainel() {

super.addMouseListener( new MouseAdapter() { public void mousePressed(MouseEvent e) { JOptionPane.showMessageDialog(null, "Clique em (" + e.getX() + ", " + e.getY() + ")" + " com o botao #" + e.getButton()); } }

); }}

4Monday, August 11, 2014

Page 5: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Métodos da Classe MouseAdapter

A classe MouseAdapter disponibiliza ainda os seguinte métodos:

void mouseClicked(MouseEvent e) - Invoked when the mouse has been clicked on a component.

void mouseEntered(MouseEvent e) - Invoked when the mouse enters a component.

void mouseExited(MouseEvent e) - Invoked when the mouse exits a component.

void mousePressed(MouseEvent e) - Invoked when a mouse button has been pressed on a component.

void mouseReleased(MouseEvent e) - Invoked when a mouse button has been released on a component.

5Monday, August 11, 2014

Page 6: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

A Classe Janela, onde tudo ocorre...

import java.awt.Dimension;import java.awt.Toolkit;import javax.swing.*;

class Janela extends JFrame{ private Dimension dimension; private int width = 640, height=480; public Janela(boolean fullScreen) { ... }

private void centerWindow(){/*coloca a janela no centro*/} private void fullWindow() {/* tela cheia*/}}

6Monday, August 11, 2014

Page 7: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

O Construtor da Classe Janela

public Janela(boolean fullScreen) { /* Se fechar o formulário, encerra a aplicação*/ super.setDefaultCloseOperation(EXIT_ON_CLOSE); /* Le as dimensões do display do equipamento do usuário.*/ dimension = Toolkit.getDefaultToolkit().getScreenSize(); if (fullScreen == true){ setUndecorated(true); /* retira a borda*/ fullWindow(); /* método que “estica” o formulário */ } else { centerWindow(); /* posiciona a janela no centro*/ } }

7Monday, August 11, 2014

Page 8: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Definição o Local da Janela

private void centerWindow() {setSize(width,height); /* width = 640 , height = 480*/ int x = (int) ((dimension.getWidth() - this.getWidth()) / 2); int y = (int)((dimension.getHeight() - this.getHeight()) / 2); setLocation(x, y); }

private void fullWindow(){ setLocation(0,0); setSize((int)dimension.getWidth(), (int)dimension.getHeight());}

8Monday, August 11, 2014

Page 9: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Exemplo de Uso da classe Janela

public class Main {

public static void main(String[] args) { Janela janela = new Janela(true); MeuPainel meuPainel = new MeuPainel(); janela.add(meuPainel);

janela.setVisible(true); }

}

9Monday, August 11, 2014

Page 10: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Inserção de Botão e definição das suas

ações

10Monday, August 11, 2014

Page 11: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Eventos em Botãopublic class Main {

! public static void main(String[] args) {! ! Janela janela = new Janela(false);! ! MeuPainel meuPainel = new MeuPainel();

! !

! ! JButton btSair = new JButton("Sair");! ! btSair.addActionListener (! ! ! new AbstractAction() ! ! ! {public void actionPerformed(java.awt.event.ActionEvent evt) ! ! ! { if (JOptionPane.showConfirmDialog(null , "Deseja sair da aplicação?") == 0)System.exit(0);}! ! ! } );! ! meuPainel.add(btSair);! !! ! janela.add(meuPainel);

! ! janela.setVisible(true);! }}

11Monday, August 11, 2014

Page 12: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Estratégia de Criação de Classes

Específicas de Ações

(programação orientada a eventos)

12Monday, August 11, 2014

Page 13: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Criação e uso de uma classe filha de MouseAdapter

13Monday, August 11, 2014

Page 14: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Classe Gerente de Mouse

class GerenteMouse extends MouseAdapter{ int cliqueX, cliqueY; JPanel j;

public GerenteMouse(JPanel janela){j = janela;} public void mousePressed(MouseEvent evt) {} public void mouseReleased(MouseEvent evt){ } public void mouseClicked(MouseEvent evt) { } public void mouseEntered(MouseEvent evt) { } public void mouseExited(MouseEvent evt) { }}

14Monday, August 11, 2014

Page 15: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Exemplo de Gerente de Mouse

class GerenteMouse extends java.awt.event.MouseAdapter{ int cliqueX, cliqueY; JPanel j;

public GerenteMouse(JPanel janela){j = janela;}

public void mousePressed(java.awt.event.MouseEvent evt) { int r,g,b; r = (int)(255*Math.random()); g = (int)(255*Math.random()); b = (int)(255*Math.random()); j.setBackground(new java.awt.Color(r,g,b)); } public void mouseReleased(java.awt.event.MouseEvent evt){ } public void mouseClicked(java.awt.event.MouseEvent evt) { } public void mouseEntered(java.awt.event.MouseEvent evt) { } public void mouseExited(java.awt.event.MouseEvent evt) { }}

15Monday, August 11, 2014

Page 16: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Uso do Gerente de Mouse

public class Main {! public static void main(String[] args) {! ! Janela janela = new Janela(false);! ! MeuPainel meuPainel = new MeuPainel();! !! ! JButton btSair = new JButton("Sair");! ! btSair.addActionListener(! new AbstractAction() ! ! ! ! {@Override! ! ! ! public void actionPerformed(ActionEvent evt) ! ! ! ! { if (JOptionPane.showConfirmDialog(null! , "Deseja sair da aplicação?") == 0)System.exit(0);} }! );! !

! ! meuPainel.add(btSair);! !

! ! JButton mudaCor = new JButton("muda a cor");! ! mudaCor.addMouseListener(new GerenteMouse(meuPainel));! ! meuPainel.add(mudaCor);! !! ! janela.add(meuPainel);! ! janela.setVisible(true);! }}

16Monday, August 11, 2014

Page 17: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Classe Acoes

class Acoes implements java.awt.event.ActionListener{ public void actionPerformed(java.awt.event.ActionEvent evt) { if (evt.getSource() instanceof JButton ) { JButton quem = (JButton)evt.getSource(); if (quem.getActionCommand() == "Sair 2") System.exit(0); } }}

17Monday, August 11, 2014

Page 18: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Uso de instância da classe Acoes

...! ! JButton btSair2 = new JButton("Sair 2");! ! btSair2.addActionListener(new Acoes());! ! meuPainel.add(btSair2);...

18Monday, August 11, 2014

Page 19: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Listener do Teclado

class MonitoraTeclado implements java.awt.event.KeyListener{! public void keyPressed(KeyEvent e) { }

! public void keyReleased(KeyEvent e) {!! }

! public void keyTyped(KeyEvent e) { }}

19Monday, August 11, 2014

Page 20: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Exemplo de Listener de Teclado

class MonitoraTeclado implements java.awt.event.KeyListener{! public void keyPressed(KeyEvent e) {! ! if (e.getKeyCode() == KeyEvent.VK_LEFT)! ! { System.out.println("LEFT"); } if (e.getKeyCode() == KeyEvent.VK_RIGHT) {System.out.println("RIGHT");} if (e.getKeyCode() == KeyEvent.VK_DOWN) {System.out.println("DWON");} if (e.getKeyCode() == KeyEvent.VK_UP) {System.out.println("UP");}! }

! public void keyReleased(KeyEvent e) {!! }

! public void keyTyped(KeyEvent arg0) ! {System.out.println("Voce pressionou : " + e);}}

20Monday, August 11, 2014

Page 21: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Uso da classe MonitoraTeclado

... meuPainel.addKeyListener(new MonitoraTeclado()); meuPainel.setFocusable(true);...

... JTextField texto = new JTextField(20); texto.addKeyListener(new MonitoraTeclado()); meuPainel.add(texto);...

21Monday, August 11, 2014

Page 22: Adding User InteractionAdding User Interaction if62c - Fundamentos de Programa o 1/2014 professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) e Robinson Vida Noronha (vida@utfpr.edu.br)

Tarefa para “sedimentar” os

conceitosProgramar uma calculadora com interface gráfica que permita executar as quatro operações básicas (somar, subtrair, multiplicar e dividir).

fim22Monday, August 11, 2014