Módulo InrerfaceGráfica

download Módulo InrerfaceGráfica

of 29

description

Apontamentos Modulo Interface Gráfica Básica PSI - Técnico Gestão e Programação de Sistemas Informáticos

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