TA345/531 TP257 Informática Aplicada à Engenharia de Alimentos.


Aula 8: Interfaces Gráficas

 

8.1. Interfaces Gráficas com usuários

Criar uma interface gráfica com usuários em Java envolve tipicamente a criação de um container que, como já visto, é um tipo de componente que pode receber outros. Em um applet o container base é um painel (uma área gráfica inserida em outra).

 

Após sua criação, os containers recebem componentes da interface com usuários que permitirão apresentar e receber dados aos, e dos, usuários. Embora seja possível posicionar esses componentes por coordenadas absolutas em cada container, é recomendável que o projetista utilize sempre um gerenciador de layout para realizar essa tarefa.

 

Desse modo, garante-se que o applet possa ser executada independentemente das características da plataforma onde será executada. Finalmente, é preciso especificar quais devem ser os efeitos das ações dos usuários (como um clique do mouse ou uma entrada de texto) quando realizadas sobre cada um desses componentes.

 

Isso se dá pela especificação de classes manipuladoras de eventos. Ao associar objetos dessas classes aos componentes gráficos, o projetista determina o comportamento do applet.

 

8.2. Eventos da Interface Gráfica

O pacote java.awt.event define as diversas classes de eventos que podem ocorrer mediante interfaces gráficas. Eventos gráficos são objetos derivados da classe AWTEvent, que, por sua vez, são derivados de objetos de evento genéricos definidos pela classe EventObject. Desta, eventos gráficos herdam o método getSource( ), que permite identificar o objeto que deu origem ao evento.

 

Eventos gráficos genéricos são especializados de acordo com o tipo de evento sob consideração; por exemplo, pressionar um botão do mouse gera um objeto da classe MouseEvent. A mesma ação sobre um botão, no entanto, gera também um ActionEvent, enquanto que, sobre o botão de minimizar na barra de título de um frame, um WindowEvent seria adicionalmente gerado.

 

Outros eventos de interesse definidos em java.awt.event incluem ItemEvent, indicando que um item de uma lista de opções foi selecionado, TextEvent, quando o conteúdo de um componente de texto foi modificado, e KeyEvent, quando alguma tecla foi pressionada no teclado.

 

A resposta que um applet dá a qualquer evento que ocorre em algum componente gráfico é determinada por métodos específicos, registrados para responder a cada evento. O nome e a assinatura de cada um desses métodos é determinado por uma interface Java do tipo listener.

 

Assim, para responder a um ActionEvent será utilizado um método definido na interface ActionListener, e para responder a um WindowEvent, os métodos de WindowListener. Similarmente, há interfaces ItemListener, TextListener e KeyListener.  

 

Os eventos do mouse são manipulados por métodos especificados em duas interfaces, MouseListener (para ações sobre o mouse) e MouseMotionListener (para tratar movimentos realizados com o mouse).

 

Exemplo de uso de interfaces gráficas:

import java.awt.*;

import java.lang.*;

import java.io.*;

import java.applet.*;

import java.awt.event.*;

 

public class exemplo extends Applet implements ItemListener

{

   TextField tf;

   Label botao;

   Choice ch;

 

   public void init()

   {

      resize(400,300);// área de exibição

      setLayout(new BorderLayout());

 

      tf = new TextField();    add("North",tf);

      Panel p = new Panel();   add("South",p);

      botao = new Label("Escolha ao lado");

      p.add(botao);

      ch=new Choice();

      ch.add("Texto");

      ch.add("Retângulo");

      ch.add("Ovalo");

      p.add(ch);ch.addItemListener(this);

    }

 

    public void itemStateChanged(ItemEvent e)

    {

                 if (e.getItem() == "Texto")

                         {

                                   tf.setText(String.valueOf(e.getItem()));

                                   repaint();

         }

         else

                 if (e.getItem() == "Retângulo")

                 {

                                   tf.setText(String.valueOf(e.getItem()));

                    repaint();

         }

         else

         if (e.getItem() == "Ovalo")

                         {

                                    tf.setText(String.valueOf(e.getItem()));

                            repaint();

                         }

    }

 

    public String getChoice()

            {

                    return ch.getSelectedItem();

            }

 

            public String getTextString()

            {

                    return tf.getText();

    }

 

    public synchronized void paint (Graphics g)

    {

       Dimension dm = size();

       String s = getChoice();

       int x,y,width,height;

       x = dm.width / 4;

       y = dm.height / 4;

       width = dm.width / 2;

       height = dm.height / 2;

 

        if (s.compareTo("Texto") == 0)

                        {

                                 String displayText = getTextString();

                                 g.setColor(Color.red);

                                 g.drawString(displayText,x,y + (height/2));

        }

        else

                        if (s.compareTo("Retângulo") == 0)

                        {

                                 g.setColor(Color.blue);

                                 g.drawRect(x,y,width,height);

                                 g.setColor(Color.yellow);

                                 g.fillRect(x+1,y+1, width - 1, height - 1);

                        }

                        if (s.compareTo("Ovalo") == 0)

                        {

                                                g.setColor(Color.magenta);

                                                g.drawOval(x,y,width,height);

                                                g.setColor(Color.yellow);

                                                g.fillOval(x+1,y+1, width-1, height-2);

                        }

     }

 }

 

 

 

8.3. Lidando com Imagens

Também podemos inserir imagens num applet. Aqui vamos fornecer um exemplo simples para mostrar que utilizar arquivos de imagens não apresenta o menor grau de dificuldade.

 

Exemplo de uso imagens:

/* oiturma.java */

import java.awt.*;

import java.applet.*;

/*

<APPLET CODE="oiturma.class" CODEBASE="." WIDTH=300 HEIGHT=250><APPLET>

*/

public class oiturma extends Applet

{

    Color corNova1 = new Color(121,139,176);

    Color corNova2 = new Color(221,245,200);

    Font fonte = new Font("Arial", Font.BOLD, 20);

    Image image;

 

    public void init( )

    {    setBackground(corNova1);

         setForeground(Color.yellow);

         image = getImage(getDocumentBase(), "ortega.jpg");

    }

 

    public void paint(Graphics tela)

            {

                 tela.setFont(fonte);

                 tela.drawImage(image, 10, 10, this);

 

                 tela.setColor(Color.pink);

                 tela.drawString("Oi, alunas!", 150, 150);

                 tela.setColor(Color.blue);

                 tela.drawString("Oi, alunos!", 150, 175);

                 tela.setColor(corNova2);

                 tela.drawString("Bom dia!",    150, 200);

    }

}

 


Volta para a pagina principal

 

Última atualização:  08/abril/2009