Eventos
de Botón
Analicemos
lo que se hace para manejar más de un botón, usemos el applet
utilizado anteriormente para dar la suma de todos los números desde
el 1 hasta el N:
Supongamos
que ahora queremos tener un botón que limpie los valores de los
campos, para volver a dar nuevos valores.
El
applet quedaría muy parecido al anterior hecho, solo que ahora en el
método action Performed debemos revisar cual fue el botón que se
seleccionó, y esto será a través de la instrucción de decisión
IF, y el método getSource() que es tomado de la clase ActionEvent,
que es el parámetro que nos pasa el método actionPerformed. Dentro
de este parámetro es donde se guarda la información sobre cual es
el elemento gráfico que fue seleccionado.
Es
importante no olvidar que todos las clases para poder usar eventos se
toman utilizando import java.awt.event.*;
El
applet quedaría como el siguiente:
import
java.awt.*;
import
java.applet.*;
import
java.awt.event.*;
//
<applet width="150" height="200"
code="AppletEventos1"></applet>
public
class AppletEventos1 extends Applet implements ActionListener {
Label
l1, l2;
TextField
t1,t2;
Button
b1,b2;
public
AppletEventos1() {
l1 =
new Label("Numero");
t1 = new TextField(8);
l2 = new Label("Suma");
t2 = new TextField(8);
b1 = new
Button("Suma");
b2 = new
Button("Limpia");
add(l1);
add(t1);
add(b1);
add(b2);
add(l2);
add(t2);
b1.
addActionListener(this);
b2.
addActionListener(this);
}
public
void actionPerformed(ActionEvent ae) {
if
(ae.getSource() == b1) {
int n =
Integer.parseInt(t1.getText());
int
suma = 0;
for (int i = 1; i<=
n; i++) {
suma += i;
}
t2.setText(""
+ suma);
}
if (ae.getSource() ==
b2) {
t1.setText("");
t2.setText("");
}
}
}
La
ejecución del applet quedaría como el siguiente:
if (ae.getSource() ==
b1) {
Lo
que revisa es si el evento que fue el tomado corresponde al objeto
del botón b1, si esto es cierto, entonces se realizan las
intrucciones dentro del if, de otra manera se salta a continuar con
el siguiente if.
La
misma acción la podemos realizar, pero utilizando el método
getActionCommand, pero aqui el cambio sería tomar el String que
aparece en el elemento del botón, no el nombre del objeto botón, la
instrucción pudiera ser :
if
(ae.getActionCommand() == "Suma")
Ambas
maneras son utilizadas para revisar cual fue el botón seleccionado.
De
tal manera que el applet podría quedar como el siguiente y
funcionaría igual:
import
java.awt.*;
import
java.applet.*;
import
java.awt.event.*;
//
<applet width="150" height="200"
code="AppletEventos1"></applet>
public
class AppletEventos1 extends Applet implements ActionListener {
Label
l1, l2;
TextField
t1,t2;
Button
b1,b2;
public
AppletEventos1() {
l1 = new
Label("Numero");
t1 = new TextField(8);
l2 = new Label("Suma");
t2 = new TextField(8);
b1 = new
Button("Suma");
b2 = new
Button("Limpia");
add(l1);
add(t1);
add(b1);
add(b2);
add(l2);
add(t2);
b1.
addActionListener(this);
b2.
addActionListener(this);
}
public
void actionPerformed(ActionEvent ae) {
if
(ae.getActionCommand() == "Suma") {
int n =
Integer.parseInt(t1.getText());
int suma = 0;
for (int i = 1; i<=
n; i++) {
suma += i;
}
t2.setText(""
+ suma);
}
if (ae.
getActionCommand() == "Limpia") {
t1.setText("");
t2.setText("");
}
}
}
Otro
EJEMPLO
Ahora
mostramos un ejemplo en el que utilizamos dos botones, un botón para
dibujar círculos en el applet al azar (empezando más debajo de la
coordenada 60, 80), el otro botón es para limpiar el applet.
import
java.awt.*;
import
java.applet.*;
import
java.awt.event.*;
//
<applet width="150" height="200"
code="AppletCirculos"></applet>
public
class AppletCirculos extends Applet implements ActionListener {
Label
l1;
TextField
t1;
Button
b1,b2;
boolean
dibuja = false; //
se inicializa dibuja en falso para no dibujar
public
AppletCirculos() {
l1
= new Label("Circulos");
t1
= new TextField(8);
b1
= new Button("Dibuja");
b2
= new Button("Limpia");
add(l1);
add(t1);
add(b1);
add(b2);
b1.
addActionListener(this);
b2.
addActionListener(this);
}
public
void actionPerformed(ActionEvent ae) {
if
(ae.getSource() == b1) {
dibuja
= true; //
si el usuario selecciona dibujar se pone verdadero
}
if
(ae.getSource() == b2) {
dibuja
= false; //
si el usuario selecciona limpiar se pone en falso
}
repaint();
}
public
void paint(Graphics g) {
if (dibuja) { //
si dibuja es verdadero se dibuja
g.setColor(Color.red); //
se cambia a rojo el color de dibujo
int circulos = Integer.parseInt(t1.getText()); //
se toma el numero del texto
for
(int i = 1; i <= circulos ; i++) { //
ciclo de circulos
int
x1 = (int) (Math.random()*100)+60;
int y1 = (int) (Math.random()*100)+80;
g.drawOval(x1,y1, 50, 50); //
se dibuja un circulo en
//
una posición al azar
}
}
else
{ //
si dibuja es falso se limpia el applet
g.setColor(Color.white);
g.fillRect(0,0,200,200);
}
}
}
Algunos
ejemplos de la vista del applet son:
No hay comentarios:
Publicar un comentario