Guia de Componentes e Eventos AWT em Java

Computação9,6 KB

Botões

Podem-se criar objetos do tipo botão com o operador new:

Button botao; botao = new Button("Botão");

A cadeia de texto passada na criação do botão aparecerá quando este for exibido na tela. Esta cadeia também servirá como identificação devolvida no evento do botão quando este for acionado.

Eventos de Botão

Os eventos de clique de um botão podem ser capturados sobrecarregando o método action():

public boolean action(Event evt, Object obj) { if (evt.target instanceof Button) System.out.println((String) obj); else System.out.println("Evento Não-Botão"); }

A distinção entre todos os botões existentes pode ser feita obtendo o objeto de destino a partir do objeto Event e comparando-o com os objetos de botão configurados em nossa interface:

import java.awt.*; import java.applet.Applet; public class AppletBotao extends Applet { Button b1, b2, b3; public void init() { b1 = new Button("Botão B1"); b2 = new Button("Botão B2"); b3 = new Button("Botão B3"); this.add(b1); this.add(b2); this.add(b3); } public boolean action(Event evt, Object obj) { if (evt.target.equals(b1)) System.out.println("Foi pressionado o botão B1"); if (evt.target.equals(b2)) System.out.println("Foi pressionado o botão B2"); if (evt.target.equals(b3)) System.out.println("Foi pressionado o botão B3"); return true; } }

Botões de Lista de Seleção (Choice)

Os botões de seleção de lista (Choice) permitem acesso rápido a uma lista de elementos. Por exemplo, poderíamos implementar e manter a seleção de cores em um botão Choice:

import java.awt.*; import java.applet.Applet; public class BotonSeleccion extends Applet { Choice selector; public void init() { selector = new Choice(); selector.addItem("Vermelho"); selector.addItem("Verde"); selector.addItem("Azul"); add(selector); } public boolean action(Event evt, Object obj) { if (evt.target instanceof Choice) { String cor = (String) obj; System.out.println("A cor escolhida é: " + cor); } return true; } }

A cadeia fornecida ao método addItem() é o argumento devolvido no evento do objeto Choice. No manipulador de eventos do botão de seleção, verifica-se primeiro se o evento foi efetivamente gerado por um botão do tipo Choice.

Caixas de Seleção (Checkbox)

As caixas de verificação (Checkbox) são usadas frequentemente para representar estados de informação do tipo sim ou não (true ou false). O estado devolvido no argumento do evento do Checkbox é do tipo booleano: verdadeiro (true) se a caixa estiver selecionada e falso (false) em caso contrário.

Tanto o estado quanto o nome devolvidos no argumento do evento podem também ser obtidos através dos métodos getLabel() e getState() do objeto Checkbox.

import java.awt.*; import java.applet.Applet; public class BotonComprobacion extends Applet { Checkbox fill; public void init() { fill = new Checkbox("Preenchimento"); add(fill); } public boolean action(Event evt, Object obj) { if (evt.target instanceof Checkbox) { System.out.println("Checkbox: " + evt.arg.toString()); } return true; } }

Botões de Opção (Radio Buttons)

Podem-se agrupar botões de seleção na interface criando um grupo de botões de opção (CheckboxGroup), em que apenas um botão da seleção permanece ativo por vez.

import java.awt.*; import java.applet.Applet; public class BotonRadio extends Applet { CheckboxGroup radio; public void init() { radio = new CheckboxGroup(); add(new Checkbox("Primeiro", radio, true)); add(new Checkbox("Segundo", radio, false)); add(new Checkbox("Terceiro", radio, false)); } }

Botões Autossuficientes

Pode-se construir uma classe derivada de Button que contenha o manipulador de eventos em si mesma. Esses botões podem ser adicionados à aplicação sem a necessidade de se preocupar com a captura dos eventos que possam gerar.

import java.awt.*; import java.applet.Applet; class BotonAceptar extends Button { public BotonAceptar() { setLabel("OK"); } public boolean action(Event evt, Object obj) { System.out.println("Botão OK"); return true; } } public class BotonAuto extends Applet { BotonAceptar botao; public void init() { botao = new BotonAceptar(); add(botao); } }

Note que não há o método action() na classe BotonAuto do Applet, pois a classe BotonAceptar cuidará de seus próprios eventos. Se outros objetos tivessem sido inseridos no applet, um método action() poderia ter sido implementado para tratar os eventos desses outros elementos.

Rótulos (Labels)

Os rótulos (Label) fornecem uma forma de posicionar texto estático em um painel para exibir informações ao usuário que normalmente permanecem inalteradas.

import java.awt.*; import java.applet.Applet; public class AppletLabel extends Applet { public void init() { Label etiq1 = new Label("Olá Java"); Label etiq2 = new Label("Outra etiqueta"); setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10)); add(etiq1); add(etiq2); } }

Listas (List)

As listas (List) aparecem nas interfaces de usuário para facilitar o manuseio de muitos elementos. São similares aos componentes Choice, porém a lista permanece visível o tempo todo, utilizando uma barra de rolagem para navegar pelos elementos ocultos.

import java.awt.*; import java.applet.Applet; public class AppletLista extends Applet { public void init() { List l = new List(4, false); l.addItem("Mercúrio"); l.addItem("Vênus"); l.addItem("Terra"); add(l); } public boolean action(Event evt, Object obj) { if (evt.target instanceof List) { System.out.println("Entrada de Lista: " + obj); } return true; } }

Para acessar os itens selecionados, utilizam-se os métodos getSelectedItem() ou getSelectedItems(). Em listas de seleção simples, clicar duas vezes em um item dispara o método action() da mesma forma que eventos de seleção em menus.

import java.awt.*; import java.applet.Applet; public class ListaMult extends Applet { List lm = new List(6, true); Button tecla; public void init() { tecla = new Button("Aceitar"); lm.addItem("Mercúrio"); lm.addItem("Vênus"); lm.addItem("Terra"); add(lm); add(tecla); } public boolean action(Event evt, Object obj) { if (evt.target instanceof Button) { if ("Aceitar".equals(obj)) { String[] selecao = lm.getSelectedItems(); for (int i = 0; i < selecao.length; i++) { System.out.println(selecao[i]); } } } return true; } }

No caso de seleção múltipla em listas, utiliza-se um evento externo para disparar a leitura dos itens associados. No exemplo, incluímos um botão para gerar o evento que faz o applet recolher os elementos selecionados na lista.

Campos de Texto (TextField)

Campos de texto (TextField) podem ser criados vazios com um comprimento determinado, preenchidos com texto pré-definido, ou preenchidos com texto pré-definido e tamanho delimitado.

import java.awt.*; import java.applet.Applet; public class CampoTexto extends Applet { TextField tf1, tf2, f3, f4; public void init() { tf1 = new TextField(); tf2 = new TextField(20); f3 = new TextField("Olá"); f4 = new TextField("Olá", 30); add(tf1); add(tf2); add(f3); add(f4); } public boolean action(Event evt, Object obj) { if (evt.target instanceof TextField) { if (evt.target.equals(tf1)) System.out.println("Campo de Texto 1: " + evt.arg.toString()); if (evt.target.equals(tf2)) System.out.println("Campo de Texto 2: " + evt.arg.toString()); if (evt.target.equals(f3)) System.out.println("Campo de Texto 3: " + evt.arg.toString()); if (evt.target.equals(f4)) System.out.println("Campo de Texto 4: " + evt.arg.toString()); } return true; } }

Quando o usuário pressiona a tecla Enter em um campo de texto, o TextField gera um evento que, assim como ocorre com outros componentes da AWT, pode ser capturado pelo método action().

Áreas de Texto (TextArea)

Os objetos TextArea são elementos utilizados para armazenar mais de uma linha de texto. A apresentação pode ser tanto editável quanto somente para leitura. Pode-se controlar a permissão de edição do usuário por meio do método setEditable(), de maneira idêntica ao TextField.

import java.awt.*; import java.applet.Applet; public class AreaTexto extends Applet { TextArea t1, t2; public void init() { Button btn = new Button("OK"); t1 = new TextArea(); t2 = new TextArea("Tutorial de Java", 5, 40); t2.setEditable(false); add(t1); add(t2); add(btn); } public boolean action(Event evt, Object obj) { if (evt.target instanceof Button) { if ("OK".equals(obj)) { String texto = t1.getText(); System.out.println(texto); } } return true; } }

Para acessar o conteúdo textual atual de uma área de texto, usa-se o método getText(). As áreas de texto não geram eventos por si sós; por isso, eventos externos (como o clique de um botão) são utilizados para saber quando acessar as informações contidas no TextArea. No exemplo, utilizamos um botão que, ao ser pressionado, dispara o evento responsável por capturar o texto inserido na área correspondente do applet.

Baixar

PDF Word HTML