Guia de Botões e Eventos em Java AWT
Criação de Botões em Java AWT
Pode-se criar objetos de botão com o operador new:
Button botao;
botao = new Button("Botão");A cadeia de texto (string) informada na instanciação aparecerá no rótulo exibido no botão quando este for desenhado na tela. Essa cadeia também é utilizada como identificação devolvida pelo evento do botão quando o clique acontece.
Eventos de Botão
Cada vez que o usuário pressiona um botão, produz-se um evento, da mesma forma como se produz um evento quando se aperta o botão do mouse. Os eventos de clique no 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 é no Botão");
}A distinção entre todos os botões existentes pode ser feita utilizando a propriedade de destino (target) contida no objeto de evento e comparando-a com as referências dos botões que temos em nossa interface:
import java.awt.*;
import java.applet.Applet;
public class BotaoApplet 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("Você pressionou o botão B1");
if (evt.target.equals(b2))
System.out.println("Você pressionou o botão B2");
if (evt.target.equals(b3))
System.out.println("Você pressionou 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 suspensa de elementos. Por exemplo, pode-se implementar uma seleção de cores utilizando o componente Choice:
import java.awt.*;
import java.applet.Applet;
public class BotonSeleccionApplet 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 foi: " + cor);
}
return true;
}
}A cadeia de texto fornecida ao método addItem() é devolvida no argumento do evento gerado pelo Choice. No manipulador de eventos da seleção local, verifica-se se o evento foi efetivamente originado por um componente desse tipo.
Botões de Verificação (Checkbox)
Os botões de verificação (Checkbox) são frequentemente usados como seletores de estado. Eles fornecem valores booleanos de sim ou não (true ou false). O estado devolvido pelo Checkbox no argumento do evento é do tipo booleano: verdadeiro (true) se a caixa estiver selecionada e falso (false) em caso contrário.
Tanto o rótulo quanto o estado são passados no argumento do evento, embora também possam ser obtidos diretamente através dos métodos getLabel() e getState() do objeto Checkbox.
import java.awt.*;
import java.applet.Applet;
public class BotonComprobacionApplet extends Applet {
Checkbox fill;
public void init() {
fill = new Checkbox("Fill");
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 Exclusiva (Radio Buttons)
Os botões de seleção exclusiva podem ser agrupados na interface por meio de um CheckboxGroup, que agrupa instâncias de Checkbox de modo que apenas um único botão permaneça ativo por vez.
import java.awt.*;
import java.applet.Applet;
public class BotonRadioApplet 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));
}
}No exemplo anterior, observamos que haverá sempre apenas uma opção ativa entre aquelas que compõem a seleção na interface implementada.
Botões Autocontidos (Self-Contained Buttons)
A natureza orientada a objetos de Java nos dá a habilidade de criar botões completamente autocontidos. Neste tipo de botão, o processador de eventos fica embutido na própria classe derivada de Button. É possível adicionar esses botões à aplicação sem a necessidade de gerenciar centralizadamente os eventos que eles geram.
import java.awt.*;
import java.applet.Applet;
class BotaoOK extends Button {
public BotaoOK() {
setLabel("OK");
}
public boolean action(Event evt, Object obj) {
System.out.println("Botão OK");
return true;
}
}
public class BotonAutoApplet extends Applet {
BotaoOK botao;
public void init() {
botao = new BotaoOK();
add(botao);
}
}Note-se que não há o método action() dentro da classe applet BotonAutoApplet; a própria classe BotaoOK se encarrega de lidar com os seus próprios eventos. Se outros objetos tivessem sido inseridos no applet, a classe principal poderia conter seu próprio método action() para tratar os eventos desses outros componentes.