Módulo InrerfaceGráfica
description
Transcript of Módulo InrerfaceGráfica
-
27/10/2015
1
Jorge
Pina
AERBP
2015
/
2016
Mdulo 19
Programao orientada a objectos - Interface Grfica
Curso - Tcnico de Gesto e Programao de Sistemas Informticos
Disciplina - Programao e Sistemas de Informao
2
Jorge
Pina
AERBP
Interface grfica (1)
Como qualquer aplicao, tambm os
programas desenvolvidos em Java podem
(e devem) ter uma interface grfica;
Nesta, os utilizadores interagem com as
aplicaes recorrendo quer ao teclado
quer ao rato.
Em Java existem dois pacotes que
permitem criar interfaces grficas:
java.awt, que foi o primeiro, e javax. swing,
que o substituiu a partir da verso 1.2.
Todas as classes do pacote javax.swing so
extenso das classes do pacote java.awt.
-
27/10/2015
2
3
Jorge
Pina
AERBP
Interface grfica (2)
Os objectos das classes que constituemo pacote javax.swing denominam-secomponentes.
Todas as interfaces grficas seconstroem a partir de componentesdenominados containers (janelas epainis) que, por sua vez, podem conteroutros componentes (botes, rtulos,caixas de texto, entre outros).
4
Jorge
Pina
AERBP
Componentes JFrame (1)
JFrame container que consiste numa janela qual se podem adicionar outros componentes.
Construtor Descrio
JFrame() Constri uma janela sem ttulo.
JFrame(String titulo)Constri uma janela com o ttulo
indicado no parmetro.
-
27/10/2015
3
5
Jorge
Pina
AERBP
Componentes JFrame (2)
import javax.swing.JFrame;
public class UsaJFrame
{
public static void main(String[] args) {
JFrame janela = new JFrame();
janela.setTitle("JFrame");
janela.setSize(350,150);
janela.setLocation(50,50);
janela.setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE);
janela.setVisible(true);}
}
6
Jorge
Pina
AERBP
Componentes JPanel (1)
JPanel container que consiste num painel aoqual se podem adicionar outros componentes.
Este por sua vez adicionado a uma janela
(JFrame).
Construtor Descrio
JPanel() Constri um painel.
Jpanel (LayoutManager
layout)
Constri um painel com um
determinado layout
-
27/10/2015
4
7
Jorge
Pina
AERBP
Componentes JPanel (2)
import javax.swing.JFrame;
import javax.swing.JPanel;
public class UsaJPanel {
public static void main(String[] args) {
JFrame janela = new JFrame();
janela.setTitle("JPanel");
janela.setSize(350,150);
janela.setLocation(50,50);
janela.setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE);
JPanel painel = new JPanel();
janela.add(painel);
janela.setVisible(true); } }
8
Jorge
Pina
AERBP
Componentes JLabel (1)
JLabel componente que consta de um rtulode texto. Pode ser adicionado a um container
(JFrame ou JPanel).
Construtor Descrio
JLabel() Constri um rtulo sem texto.
JLabel(String texto)Constri um rtulo com o texto
indicado no parmetro.
-
27/10/2015
5
9
Jorge
Pina
AERBP
Componentes JLabel (2)
import javax.swing.JFrame;import javax.swing.JLabel;public class UsaJLabel {
public static void main(String[] args) {JFrame janela = new JFrame();janela.setTitle("JLabel");janela.setSize(350,150);janela.setLocation(50,50);janela.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);JLabel rotulo = new JLabel("Escreva o seu nome: ");janela.add(rotulo);janela.setVisible(true); }
}
10
Jorge
Pina
AERBP
Componentes JTextField (1)
JTextField componente que consta de um campode texto editvel com uma nica linha.Habitualmente utiliza-se em conjunto com um rtulo(JLabel). Pode ser adicionado a um container(JFrame ou JPanel).
Construtor Descrio
JTextField() Constri um campo de texto.
JTextField(int
colunas)
Constri um campo de texto com
o nmero de colunas indicado no
parmetro.
-
27/10/2015
6
11
Jorge
Pina
AERBP
Componentes JTextField (2)
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.FlowLayout;
public class UsaJTextField {
public static void main(String[] args) {
JFrame janela = new JFrame();
janela.setTitle("JTextField");
janela.setSize(350,150);
janela.setLocation(50,50);
janela.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
janela.setLayout(new FlowLayout());
JLabel rotulo = new JLabel("Escreva o seu nome: ");
JTextField caixaTexto = new JTextField(10);
janela.add(rotulo);
janela.add(caixaTexto);
janela.setVisible(true); } }
12
Jorge
Pina
AERBP
Componentes JButton (1)
JButton componente que pode seradicionado a um container (JFrame ou JPanel).
Quando premido gera um evento tratado pela
interface ActionListener.
Construtor Descrio
JButton() Constri um boto sem texto.
JButton(String texto)Constri um boto com o texto
indicado no parmetro.
-
27/10/2015
7
13
Jorge
Pina
AERBP
Componentes JButton (2)
import javax.swing.JFrame;
import javax.swing.JButton;
public class UsaJButton {
public static void main(String[] args) {
JFrame janela = new JFrame();
janela.setTitle("JButton");
janela.setSize(350,150);
janela.setLocation(50,50);
janela.setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE);
JButton botao = new JButton("OK");
janela.add(botao);
janela.setVisible(true); } }
14
Jorge
Pina
AERBP
Componentes JComboBox (1)
JComboBox componente que consiste numa caixa deseleco que permite escolher apenas uma das opes dalista dada. Habitualmente utiliza-se em conjunto com umrtulo (JLabel). Pode ser adicionado a um container (JFrameou JPanel).
Construtor Descrio
JComboBox()Constri uma caixa de selecovazia.
JComboBox(Objecto[]itens)
Constri uma caixa de selecocom os itens contidos no arrayindicado no parmetro.
-
27/10/2015
8
15
Jorge
Pina
AERBP
Componentes JComboBox (2)
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import java.awt.FlowLayout;
public class UsaJComboBox {
public static void main(String[] args) {
JFrame janela = new JFrame();
janela.setTitle("JComboBox");
janela.setSize(350,150);
janela.setLocation(50,50);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setLayout(new FlowLayout());
JLabel rotulo = new JLabel("Seleccione uma cor: ");
JComboBox caixaCombinacao = new JComboBox();
janela.add(rotulo);
caixaCombinacao.addItem("Branco");
caixaCombinacao.addItem("Preto");
caixaCombinacao.addItem("Amarelo");
janela.add(caixaCombinacao);
janela.setVisible(true); } }
16
Jorge
Pina
AERBP
Componentes JCheckBox(1)
JCheckBox componente que se baseia em caixas de oposendo possvel seleccionar zero, uma ou mais opes. Pode seradicionado a um container (JFrame ou JPanel).
Construtor Descrio
JCheckBox() Constri uma caixa de opo vazia.
JCheckBox(String texto)Constri uma caixa de opoassociada ao texto indicado noparmetro.
JCheckBox(String texto, boolean estado)
Constri uma caixa de opoassociada ao texto e com o estadoindicado no parmetro.
-
27/10/2015
9
17
Jorge
Pina
AERBP
Componentes JCheckBox (2)
import javax.swing.JFrame;
import javax.swing.JCheckBox;
import java.awt.FlowLayout;
public class UsaJCheckBox {
public static void main(String[] args) {
JFrame janela = new JFrame();
janela.setTitle("JCheckBox");
janela.setSize(350,150);
janela.setLocation(50,50);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setLayout(new FlowLayout());
JCheckBox caixaVerificacao1 = new JCheckBox("Branco");
JCheckBox caixaVerificacao2 = new JCheckBox("Preto");
JCheckBox caixaVerificacao3 = new JCheckBox("Amarelo");
janela.add(caixaVerificacao1);
janela.add(caixaVerificacao2);
janela.add(caixaVerificacao3);
janela.setVisible(true); } }
18
Jorge
Pina
AERBP
Componentes JRadioButton (1)
JRadioButton componente que se baseia num conjunto de botesde opo, em que apenas um pode estar seleccionado, e quepode ser adicionados a um container (JFrame ou JPanel).
Construtor Descrio
JRadioButton() Constri um boto de opo vazio.
JRadioButton(String texto)Constri um boto de opoassociado ao texto indicado noparmetro.
JRadioButton(String texto, boolean estado)
Constri um boto de opoassociado ao texto e com o estadoindicado no parmetro.
-
27/10/2015
10
19
Jorge
Pina
AERBP
Componentes JRadioButton (2)
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import java.awt.FlowLayout;
public class UsaJRadioButton {
public static void main(String[] args) {
JFrame janela = new JFrame();
janela.setTitle("JRadioButton");
janela.setSize(350,150);
janela.setLocation(50,50);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setLayout(new FlowLayout());
JRadioButton botaoRadio1 = new JRadioButton("Branco");
JRadioButton botaoRadio2 = new JRadioButton("Preto");
JRadioButton botaoRadio3 = new JRadioButton("Amarelo");
janela.add(botaoRadio1);
janela.add(botaoRadio2);
janela.add(botaoRadio3);
janela.setVisible(true); } }
20
Jorge
Pina
AERBP
Componentes - JOptionPane (1)
JOptionPane componente que consiste numa caixa dedilogo.
Existem quatro tipos padro de caixas de dilogo:
MessageDialog, InputDialog, ConfirmDialog, Option-Dialog.
-
27/10/2015
11
21
Jorge
Pina
AERBP
Componentes - JOptionPane (2)
Mtodo Descrio
showMessageDialog(Componente componentePai, Objecto msg)
MessageDialog apresenta a mensagem indicada no parmetro.
showConfirmDialog(Componente componentePai, Objecto msg)
ConfirmDialog emite a mensagem indicada no parmetro e apresenta as opes Yes, No e Cancel.
showInputDialog(Objecto msg)
InputDialog emite a mensagem indicada no parmetro e permite a entrada de texto.
showOptionDialog(Componente componentePai, Objecto msg, String ttulo, int tipoOpcao, inttipoMsg, Icon icon, Objecto[] opes, Objecto valorInicial)
OptionDiaolog abrange os trs tipos anteriores.
22
Jorge
Pina
AERBP
Componentes JOptionPane (3)
import javax.swing.JOptionPane;
public class UsaJOptionPane
{
public static void main (String[] args) {
JOptionPane.showMessageDialog(null,"Obrigado por ter utilizado este programa");
JOptionPane.showInputDialog("Escreva o seu nome");
JOptionPane.showConfirmDialog(null,"Deseja guardar as alteraes?");
JOptionPane.showOptionDialog(null,"Deseja Cancelar Importao?","Importando Projeto",0,JOptionPane.QUESTION_MESSAGE,null,null,null);
}
}
-
27/10/2015
12
23
Jorge
Pina
AERBP
Gestores de layout
Permitem a incluso de mais do que
um componente na janela ou no
painel.
Existem cinco gestores de layout:
FlowLayout
GridLayout
BorderLayout
CardLayout
BoxLayout
24
Jorge
Pina
AERBP
Gestores de layoutFlowLayout (1)
Os componentes so dispostos da
esquerda para a direita respeitando a
ordem pela qual so adicionados.
Quando uma linha fica preenchida
automaticamente aberta uma nova
linha.
-
27/10/2015
13
25
Jorge
Pina
AERBP
Gestores de layoutFlowLayout (2)
FlowLayout() - constri um novo FlowLayout comalinhamento ao centro e um espaamento horizontal
e vertical de 5 unidades;
FlowLayout(int align) - constri um novoFlowLayout com alinhamento especificado (0 LEFT, 1
CENTER, 2 RIGHT, 3 LEADING, 4 - TRAILING) no parmetro e um
espaamento horizontal e vertical de 5 unidades;
FlowLayout(int align, int hgap, int vgap) -constri um novo FlowLayout com alinhamento e
espaamento horizontal e vertical especificados nos
parmetros;
26
Jorge
Pina
AERBP
Exerccio - FlowLayout
import java.awt.FlowLayout;
import javax.swing.*;
public class UtilizaFlowLayout {
public static void main(String[] args) {
JFrame janela = new JFrame("Exemplo de FlowLayout");
janela.setSize(300,150);
janela.setLocation(100,100);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setLayout(new FlowLayout(1,10,10));
JLabel rotulo = new JLabel("Escreva o seu nome: ");
JTextField caixaTexto = new JTextField(10);
JButton botao = new JButton("OK");
janela.add(rotulo);
janela.add(caixaTexto);
janela.add(botao);
janela.setVisible(true); } }
-
27/10/2015
14
27
Jorge
Pina
AERBP
Gestores de layoutGridLayout (1) O container dividido em linhas e colunas e
os componentes so colocados dentro das
clulas resultantes.
Os componentes so dispostos da esquerda
para a direita e de cima para baixo,
respeitando a ordem pela qual so
adicionados.
Os componentes so redimensionados de
acordo com as dimenses do container.
28
Jorge
Pina
AERBP
Gestores de layoutGridLayout (2)
GridLayout() - constri um novo GridLayout com 1
linha e 1 coluna;
GridLayout(int rows, int cols) - constri um novo
GridLayout com o n de linhas e colunas especificado
nos parmetros;
GridLayout(int rows, int cols, int hgap, int
vgap) - constri um novo GridLayout com o n de
linhas, colunas e espaamento horizontal e vertical
especificados nos parmetros;
-
27/10/2015
15
29
Jorge
Pina
AERBP
Exerccio - GridLayoutimport java.awt.GridLayout;
import javax.swing.*;
public class UtilizaGridLayout {
public static void main(String[] args) {
JFrame janela = new JFrame("Exemplo de GridLayout");
janela.setSize(350,150);
janela.setLocation(50,50);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setLayout(new GridLayout(3,2,3,3));
JLabel rotulo1 = new JLabel("Digiteo nome de um fruto: ");
JTextField caixaTexto = new JTextField(10);
JLabel rotulo2 = new JLabel ("Seleccione uma bebida: ");
String[] bebida=new String[]{"gua","Leite","Vinho"};
JComboBox caixaCombinacao = new JComboBox(bebida);
JButton botao = new JButton("OK");
janela.add(rotulo1);
janela.add(caixaTexto);
janela.add(rotulo2);
janela.add(caixaCombinacao);
janela.add(botao);
janela.setVisible(true); } }
30
Jorge
Pina
AERBP
Gestores de layoutBorderLayout (1) O container dividido cinco zonas distintas:
north (regio superior), south (regio inferior),
west (regio esquerda), east (regio
direita) e center (regio central).
Os componentes so adicionados numa
zona especfica no sendo, por isso,
relevante a ordem de insero.
Cada zona alberga apenas um componente,
ou seja, este layout suporta no mximo 5
componentes.
-
27/10/2015
16
31
Jorge
Pina
AERBP
Gestores de layoutBorderLayout (2) Se um componente for adicionado a uma
zona j preenchida o componente que l se
encontra ser sobreposto.
Os componentes so redimensionados de
acordo com as dimenses do container.
32
Jorge
Pina
AERBP
Gestores de layoutBorderLayout
BorderLayout() - constri um novo BorderLayout
sem qualquer espaamento entre os componentes;
BorderLayout(int hgap, int vgap) - constri um
novo BorderLayout com o espaamento horizontal e
vertical especificados nos parmetros;
-
27/10/2015
17
33
Jorge
Pina
AERBP
Exerccio - BorderLayoutimport java.awt.BorderLayout;
import javax.swing.*;
public class UtilizaBorderLayout{
public static void main(String[] args) {
JFrame janela = new JFrame("BorderLayout");
janela.setSize(350,150);
janela.setLocation(50,50);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setLayout(new BorderLayout());
JButton botaoNorte = new JButton("N");
JButton botaoSul = new JButton("S");
JButton botaoOeste = new JButton("W");
JButton botaoEste = new JButton("E");
JButton botaoCentro = new JButton("Centro");
janela.add("North", botaoNorte );
janela.add("South", botaoSul);
janela.add("West",botaoOeste );
janela.add("East", botaoEste);
janela.add("Center", botaoCentro);
janela.setVisible(true); } }
34
Jorge
Pina
AERBP
Gestores de layoutCardLayout
Agrupa diversos containers naforma de cartes mostrandoapenas um de cada vez;
Cada container pode possuir umgestor de layout diferente.
-
27/10/2015
18
35
Jorge
Pina
AERBP
Gestores de layoutCardLayout
CardLayout() - constri um novo CardLayout sem
qualquer espaamento entre os componentes;
CardLayout(int hgap, int vgap) - constri um
novo CardLayout com o espaamento horizontal e
vertical especificados nos parmetros;
36
Jorge
Pina
AERBP
Exerccio - CardLayoutimport java.awt.event.ActionListener;
public class UtilizaCardLayout implements
ActionListener{
JFrame janela = new JFrame(CardLayout");
JPanel painelBotoes = new JPanel(new GridLayout(1,2));
JButton botao1 = new JButton("Painel 1");
JButton botao2 = new JButton("Painel 2");
JPanel painelRotulo1 = new JPanel();
JPanel painelRotulo2 = new JPanel();
JLabel rotulo1 = new JLabel("Painel 1");
JLabel rotulo2 = new JLabel("Painel 2");
JPanel painelRotulos = new JPanel();
public static void main(String[] args) {
new UtilizaCardLayout(); }
private UtilizaCardLayout() {
janela.setSize(350,150);
janela.setLocation(50,50);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLO
SE);
janela.setLayout(new BorderLayout());
painelBotoes.add(botao1);
painelBotoes.add(botao2);
painelRotulo1.add(rotulo1);
painelRotulo2.add(rotulo2);
painelRotulos.setLayout(new
CardLayout());
painelRotulos.add(painelRotulo1, "p1");
painelRotulos.add(painelRotulo2, "p2");
janela.add("North",painelBotoes);
janela.add("South",painelRotulos);
botao1.addActionListener(this);
botao2.addActionListener(this);
janela.setVisible(true); } //Mostra a janela
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == botao1){
painelRotulo1.setVisible(true);
painelRotulo2.setVisible(false); }
if (e.getSource() == botao2){
painelRotulo1.setVisible(false);
painelRotulo2.setVisible(true); }} }
-
27/10/2015
19
37
Jorge
Pina
AERBP
Gestores de layoutBoxLayout Os componentes so dispostos da esquerda
para a direita ou de cima para baixo
respeitando a ordem pela qual so
adicionados.
Os componentes ir-se-o ajustando largura
ou altura do painel.
38
Jorge
Pina
AERBP
Gestores de layoutBoxLayout
BoxLayout(Container target, int axis) - constri
um novo BoxLayout associado a um painel com uma
disposio de componentes na horizontal ou na
vertical;
O parmetro axis representa as variveis de classe
X_AXIS e Y_AXIS, da classe BoxLayout.
BoxLayout.X_AXIS / BoxLayout.Y_AXIS
-
27/10/2015
20
39
Jorge
Pina
AERBP
Exerccio - BoxLayout
import java.awt.*;
import javax.swing.*;
public class BoxLayoutS {
public static void main(String args[]){
JFrame janela = new JFrame();
janela.setTitle("BoxLayoutS");
janela.setSize(200,200);
janela.setLocation(50,50);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setBackground(Color.red);
JPanel lateral = new JPanel();
lateral.setLayout (new BoxLayout(lateral,BoxLayout.Y_AXIS));
for (int i = 0; i < 5; i++)
lateral.add(new JButton("Boto "+(i+1)));
janela.add(lateral);
janela.setVisible(true);
}
}
40
Jorge
Pina
AERBP
Gestores de layout
Ficha de trabalho n 1
-
27/10/2015
21
41
Jorge
Pina
AERBP
Tratamento de eventos (1)
As interfaces grficas s tm a capacidade de
interpretar as aces do utilizador se implementarem
uma ou mais interfaces receptoras de eventos.
As principais interfaces receptoras de eventos so:
ActionListener;
FocusListener;
MouseListener;
WindowsListener.
Para o tratamento dos eventos necessrio o importe
do pacote java.awt.event e a agregao das
interfaces classe:
public class ExemploAL implements xxxListener
42
Jorge
Pina
AERBP
Tratamento de eventos (2)
ActionListener eventos de aco como um clique dorato sobre um boto ou o pressionar da tecla ENTER
num campo de texto.
Ao clicar-se num boto, um evento da classeActionEvent gerado - componente.addActionListener(this)
componente boto o campo de texto
this procura o evento na prpria classe, ou seja,executa o mtodo actionPerformed;
invocado o mtodo actionPerformed(ActionEvent e);
O parametro do metodo (e) um objecto da classeActionEvent, e contm informao que permite identificar qualobjecto gerou o evento;
O mtodo getSource() aplicado ao evento retorna o objectoque gerou o evento (e.getSource()).
-
27/10/2015
22
43
Jorge
Pina
AERBP
Tratamento de eventos (3)import java.awt.event.*; import javax.swing.*;
public class ExAL implements ActionListener {
JFrame janela = new JFrame(); JPanel painel = new JPanel();
JButton botao = new JButton("Label"); JButton botao1 = new Jbutton (Mens");
JLabel rotulo=new JLabel();
public static void main (String args[]){
new ExAL(); }
public ExAL(){
botao.addActionListener(this);
botao1.addActionListener(this);
painel.add(botao); painel.add(rotulo);
painel.add(botao1); janela.add(painel);
janela.setVisible(true);
janela.setSize(250,150);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
public void actionPerformed(ActionEvent e){
if (e.getSource() == botao){
rotulo.setVisible(true);
rotulo.setText("Exemplo de ActionListener");}
if (e.getSource() == botao1){
rotulo.setVisible(false);
JOptionPane.showMessageDialog(null,Exemplo de Evento"); }} }
44
Jorge
Pina
AERBP
Tratamento de eventos (4)
FocusListener eventos de foco gerados quando umcomponente recebe ou perde o foco. Tem dois
mtodos associados:
Um evento da classe FocusEvent gerado -componente.addFocusListener (this)
componente boto o campo de texto
this procura o evento na prpria classe, ou seja,executa os mtodos focusGained e focusLost ;
So invocados os mtodos focusGained (FocusEvent e)e focusLost (FocusEvent e);
O parametro do metodo (e) um objecto da classeFocusEvent, e contm informao que permiteidentificar qual objecto gerou o evento;
O mtodo getSource() aplicado ao evento retorna oobjecto que gerou o evento (e.getSource()).
-
27/10/2015
23
45
Jorge
Pina
AERBP
Tratamento de eventos (5)import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class MudaFoco extends JFrame implements FocusListener{
JTextField tf1 = new JTextField();
JTextField tf2 = new JTextField();
public static void main (String[] args){
new MudaFoco(); }
public MudaFoco() {
add (tf1, "North"); add(tf2, "South");
setSize(150,150);
setDefaultCloseOperation (EXIT_ON_CLOSE);
tf1.addFocusListener (this); tf2.addFocusListener (this);
setVisible(true); }
public void focusGained (FocusEvent e){
if (e.getSource() == tf1)
System.out.println ("tf1 ganhou foco!");
if (e.getSource() == tf2)
System.out.println ("tf2 ganhou foco!");
}
public void focusLost (FocusEvent e){
if (e.getSource() == tf1)
System.out.println ("tf1 perdeu foco!");
if (e.getSource() == tf2)
System.out.println ("tf2 perdeu foco!"); } }
46
Jorge
Pina
AERBP
Tratamento de eventos (6)
MouseListener eventos gerados pelo rato
quando, por exemplo, clicado ou entra na
rea de um componente.
Um evento da classe MouseEvent gerado -
componente.addMouseListener (this)
componente boto o campo de texto;
this procura o evento na prpria classe,
ou seja, executa os mtodos da interface.
-
27/10/2015
24
47
Jorge
Pina
AERBP
Tratamento de eventos (6)
So invocados os mtodos:
mouseClicked(MouseEvent e):
Quando o boto do rato foi clicado (pressionado e
libertado);
mouseEntered(MouseEvent e):
Quando o rato passa por um componente;
mouseExited(MouseEvent e):
Quando o rato sai de um componente;
48
Jorge
Pina
AERBP
Tratamento de eventos (6)
mousePressed(MouseEvent e):
Quando o boto do rato foi pressionado;
mouseReleased(MouseEvent e):
Quando o boto do rato foi pressionado sobre o
boto e libertado fora do boto.
O parametro do mtodo (e) um objeto da classe
MouseEvent, e contm informao que permite identificar
qual objecto gerou o evento;
O mtodo getSource() aplicado ao evento retorna o objeto
que gerou o evento (e.getSource()).
-
27/10/2015
25
49
Jorge
Pina
AERBP
Tratamento de eventos (7)import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class ERato extends JFrame implements MouseListener {
JButton btn=new JButton ("Passe o rato aqui!");
JButton btn1=new JButton ("Passe o rato aqui!");
public static void main (String[] args) {
new ERato(); }
public ERato(){
add (btn, "North"); add (btn1, "South");
setSize(150,150); btn.addMouseListener(this); btn1.addMouseListener (this);
setVisible (true);}
public void mouseEntered (MouseEvent e) {
if (e.getSource() == btn) btn.setBackground (Color.yellow);
if (e.getSource() == btn1) btn1.setBackground (Color.red); }
public void mouseExited(MouseEvent e) {
if (e.getSource() == btn) btn.setBackground (Color.blue);
if (e.getSource() == btn1) btn1.setBackground (Color.green); }
public void mouseReleased(MouseEvent e) {
if (e.getSource() == btn) btn.setBackground (Color.magenta);
if (e.getSource() == btn1) btn1.setBackground (Color.black); }
public void mousePressed(MouseEvent e) {
if (e.getSource() == btn) btn.setBackground (Color.white);
if (e.getSource() == btn1) btn1.setBackground (Color.cyan); }
public void mouseClicked(MouseEvent e) {
if (e.getSource() == btn) btn.setBackground (Color.pink);
if (e.getSource() == btn1) btn1.setBackground (Color.pink); }}
50
Jorge
Pina
AERBP
Tratamento de eventos (8)
WindowsListener eventos gerados pelas janelas
quando estas so maximizadas, minimizadas, entre
outras;
Um evento da classe WindowsEvent gerado so
invocados os 7 mtodos da interface:
windowActivated(WindowEvent e):
Trata o evento que indica que a janela ganhou o foco do
teclado, tornando-se a janela ativa;
windowDeactivated(WindowEvent e):
Trata o evento que indica que a janela deixou de ser a
janela ativa, provavelmente porque outra janela foi ativada.
-
27/10/2015
26
51
Jorge
Pina
AERBP
Tratamento de eventos (9)
windowIconified(WindowEvent e):
Trata o evento que indica que janela foi iconificada, ou seja,passou do estado normal para minimizada.
windowDeiconified(WindowEvent e):
Trata o evento indicando que o cone da janela foi aberto,ou seja passou do estado minimizada para normal).
windowOpened(WindowEvent e):
Trata o evento que apenas gerado quando a janela criada e aberta pela primeira vez;
windowClosed(WindowEvent e):
Trata o evento que indica que a janela foi fechada;
windowClosing(WindowEvent e):
O utilizador solicitou que a janela fosse fechada, seja atravsde um menu do sistema ou atravs de um boto da barrade ttulos ou atravs de uma sequncia de teclas do sistema.
52
Jorge
Pina
AERBP
Tratamento de eventos (10)
Classes adaptadoras:
WindowAdapter uma classe que possui dez mtodosvazios, sendo sete os mesmos da interface e os restantes3:
windowGainedFocus(WindowEvent e):
Chamado quando a janela est definida para ser ajanela ativa, o que significa que a janela, ou um de seussubcomponentes, receber eventos do teclado;
windowLostFocus(WindowEvent e):
Chamado quando a janela deixa de ser a janela ativa;
windowStateChanged(WindowEvent e):
Chamado quando o estado da janela alterado.
Basta apenas sobrescrever o corpo do mtodo queinteressa que atue no evento.
-
27/10/2015
27
53
Jorge
Pina
AERBP
Tratamento de eventos (2)
import javax.swing.JFrame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.*;
import java.awt.event.*;
public class fechar extends JFrame implements WindowListener {
public static void main (String[] args){ }
public void windowOpened(WindowEvent e) { }
public void windowClosing(WindowEvent e) {
System.exit(0);
}
public void windowClosed(WindowEvent e) { }
public void windowIconified(WindowEvent e) { }
public void windowDeiconified(WindowEvent e) { }
public void windowActivated(WindowEvent e) { }
public void windowDeactivated(WindowEvent e) { }
}
54
Jorge
Pina
AERBP
Tratamento de eventos (2)
import javax.swing.JOptionPane;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JFrame;
public class WindowListenerAdapter {
public static void main(String args[]) {
JFrame janela = new JFrame("Window Listener");
janela.setSize(300, 300);
janela.setVisible(true);
WindowListener listener = new WindowAdapter() {
public void windowOpened(WindowEvent e) {
System.out.println("A janela ABRIU!!!"); }
public void windowClosing(WindowEvent e) {
JOptionPane.showMessageDialog(null,Vai Fechar.,"ATENO,JOptionPane.WARNING_MESSAGE);
System.exit(0);
}
-
27/10/2015
28
55
Jorge
Pina
AERBP
Tratamento de eventos (2)
public void windowClosed(WindowEvent e) {
System.out.println("A janela FECHADA!!! ");
}
public void windowIconified(WindowEvent e) {
System.out.println("A janela MINIMIZOU!!! ");
}
public void windowDeiconified(WindowEvent e) {
System.out.println("A janela NORMALIZOU!!! ");
}
public void windowActivated(WindowEvent e) {
System.out.println("A janela ATIVADA!!! ");
}
public void windowDeactivated(WindowEvent e) {
System.out.println("A janela DESATIVADA!!! ");
}
};
janela.addWindowListener(listener);
} }
56
Jorge
Pina
AERBP
Mdulo 19 - Interface grfica
FIM DO MDULO
OBRIGADO
-
27/10/2015
29
57
Jorge
Pina
AERBP
Referncias Bibliogrficas
EIJE, Albert; BARROS, Cludio; KOJIIO, Miguel.
Curso Java Starter [online]. Disponvel na
Internet via WWW. URL http://www.t2ti.com/
curso/video/java/ basico/java_starter.php.
Consultado em novembro 2014
iPed. Curso de Java [online]. Disponvel na
Internet via WWW. URL http://www.iped.
com.br/curso/java/. Consultado em
novembro 2014