adding user interactionadding user interaction if62c - fundamentos de programa o 1/2014 professores...
Post on 24-Sep-2020
0 Views
Preview:
TRANSCRIPT
Adding User Interaction
if62c - Fundamentos de Programação1/2014
professores Danillo Leal Belmonte (belmonte@utfpr.edu.br) eRobinson Vida Noronha (vida@utfpr.edu.br)
1Monday, August 11, 2014
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
Estratégias Isoladas em Componentes
3Monday, August 11, 2014
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
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
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
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
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
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
Inserção de Botão e definição das suas
ações
10Monday, August 11, 2014
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
Estratégia de Criação de Classes
Específicas de Ações
(programação orientada a eventos)
12Monday, August 11, 2014
Criação e uso de uma classe filha de MouseAdapter
13Monday, August 11, 2014
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
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
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
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
Uso de instância da classe Acoes
...! ! JButton btSair2 = new JButton("Sair 2");! ! btSair2.addActionListener(new Acoes());! ! meuPainel.add(btSair2);...
18Monday, August 11, 2014
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
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
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
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
top related