Académique Documents
Professionnel Documents
Culture Documents
OPERACIONES ARITMETICAS
Tpicos Avanzados Programacin
Component es una clase abstracta que representa todo lo que tiene una posicin, un tamao,
puede ser pintado en pantalla y puede recibir eventos.
No tiene constructores pblicos, ni puede ser instanciada. Sin embargo, desde el JDK 1.1 puede
ser extendida para proporcionar una nueva caracterstica incorporada a Java, conocida como
componentes Lightweight.
Los Objetos derivados de la clase Component que se incluyen en el Abstract Window Toolkit son
los que aparecen a continuacin:
Button
Canvas
Checkbox
Choice
Container
o Panel
o Window
o Dialog
o Frame
Label
List
Scrollbar
TextComponent
o TextArea
o TextField
Los botones de pulsacin (Button), son los que se han utilizado fundamentalmente en los
ejemplos de este Tutorial, aunque nunca se han considerado sus atributos especficamente.
La clase Button es una clase que produce un componente de tipo botn con un ttulo. El
constructor ms utilizado es el que permite pasarle como parmetro una cadena, que ser la que
aparezca como ttulo e identificador del botn en el interfaz de usuario. No dispone de campos o
variables de instancia y pone al alcance del programador una serie de mtodos entre los que
destacan por su utilidad los siguientes:
Adems dispone de todos los mtodos heredados de las clases Component y Object.
ActionListener es uno de los eventos de tipo semntico. Un evento de tipo Action se produce
cuando el usuario pulsa sobre un objeto Button. Adems, un objeto Button puede generar
eventos de bajo nivel de tipo FocusListener, MouseListener o KeyListener, porque hereda los
mtodos de la clase Component que permiten instanciar y registrar receptores de eventos de
este tipo sobre objetos de tipo Button.
Botones de Seleccin
Los botones de seleccin (Choice) permiten el rpido acceso a una lista de elementos,
presentndose como ttulo el item que se encuentre seleccionado.
La clase Choice tambin dispone de cerca de una veintena de mtodos que permiten la
manipulacin de los items disponibles para la seleccin, cuya amplia documentacin el lector
puede consultar en el API del JDK.
El ejemplo que se ha implementado, java1302.java, para ilustrar el uso de los botones de
seleccin, coloca un objeto de tipo Choice sobre un objeto Frame y aade tres objetos de
tipo String al objetoChoice, fijando el segundo de ellos como preseleccionado a la hora de lanzar
el programa. La presentacin inicial de la aplicacin al ejecutarla es la que reproduce la imagen.
Se instancia y registra un objeto de tipo ItemListener sobre el objeto Choice para identificar y
presentar el objeto String que se elige cuando el usuario utiliza una seleccin. Cuando esto
ocurre, se captura un evento en el mtodo sobrescrito itemStateChanged() del
objeto ItemListener. El cdigo de este mtodo utiliza una llamada a getSelectedItem() para el
item que est marcado y presentar la cadena que le corresponde.
import java.awt.*;
import java.awt.event.*;
import java.util.*;
La lnea de cdigo siguiente hace que el objeto Tercer Choice de tipo String, sea el que se
encuentre visible al lanzar la aplicacin.
A esta sentencia le sigue el cdigo que crea el objeto Frame, coloca el objeto Choice en l, etc.
Ya se han visto varias veces sentencias de este tipo, as que no merece la pena volver sobre
ellas. As que ya solamente queda como cdigo interesante en el programa el
mtodo itemStateChanged() que est sobrescrito, del objeto ItemListener.
Eventos de este tipo se producen siempre que el usuario realiza una seleccin (abre la lista de
opciones y pulsa el botn del ratn con el cursor sobre una de ellas). Y, como se puede ver, el
mtodo getSelectedItem() es el encargado de obtener la representacin en cadena del item que
estaba seleccionado en ese momento.
Botones de Comprobacin
Los botones de comprobacin (Checkbox) se pueden agrupar para formar un interfaz de botn
de radio (CheckboxGroup), que son agrupaciones de botones de comprobacin de exclusin
mltiple, es decir, en las que siempre hay un nico botn activo.
La otra forma, ms compleja, para procesar informacin de objetos Checkbox es responder a los
diferentes tipos de eventos que se generan cuando el usuario selecciona
objetos Checkbox distintos. Actualmente, no es demasiado complicado responder a estos
eventos, porque se pueden instanciar objetos Listener y registrarlos sobre los
objetos Checkbox, y eso no es difcil. La parte compleja es la implementacin de la lgica
necesaria para dar sentido a las acciones del usuario, especialmente cuando ese usuario no tiene
clara la seleccin que va a realizar y cambia continuamente de opinin.
El ejemplo que sigue, java1303.java, utiliza la solucin simple, permitiendo que el usuario cambie
de opcin cuntas veces quiera y tome una decisin final pulsando sobre el botn "Aceptar". Se
colocan cuatro objetos Checkbox, definidos sobre un objeto CheckboxGroup, y un
objeto Button sobre un objeto Frame. La apariencia de estos elementos en pantalla es la que
muestra la figura.
import java.awt.*;
import java.awt.event.*;
import java.util.*;
Hay cuatro trozos interesantes de cdigo en este ejemplo que merecen un poco de atencin
especial. El primero es la creacin del objeto CheckboxGroup, que posteriormente se utilizar
para agrupar a los cuatro objetos Checkbox en un solo grupo lgico.
Tambin est la instanciacin de los cuatro objetos Checkbox como parte del
grupo CheckboxGroup y su incorporacin al Frame.
Listas
Las listas (List) aparecen en los interfaces de usuario para facilitar a los operadores la
manipulacin de muchos elementos. Se crean utilizando mtodos similares a los de los
botones Choice. La lista es visible todo el tiempo, utilizndose una barra de desplazamiento para
visualizar los elementos que no caben en el rea de la lista que aparece en la pantalla.
En el ejemplo java1304.java, que ilustra el empleo de las listas, coloca un objeto List y un
objeto Button sobre un objeto Frame. Se aaden quince objetos String a la lista y se deja el
segundo como seleccionado inicialmente. La apariencia de la ventana as construida, al inicializar
el programa, es la que se reproduce en la imagen siguiente.
Sobre la lista se instancia y registra un objeto de tipo ActionListener, cuyo propsito es identificar
y presentar en pantalla el objeto String, que el usuario ha seleccionado haciendo un doble pique
sobre l. Cuando selecciona y luego pica dos veces con el ratn sobre un elemento de la lista,
un evento es capturado por el mtodo sobrescrito actionPerformed() del objeto ActionListener.
El cdigo de este mtodo utiliza la llamada a getSelectedItem() de la clase List, para identificar y
presentar la cadena que corresponde al elemento seleccionado. Sin embargo, si el usuario realiza
una doble pulsacin con el ratn sobre un elemento, mientras otro se encuentra seleccionado, el
mtodo getSelectedItem() devuelve null y no aparecer nada en pantalla.
Al objeto Frame tambin se le incorpora un Botn para permitir realizar seleccin mltiple en la
lista; de tal forma que cuando se pulsa, se captura el evento ActionListener que genera y
presenta en pantalla los elementos que se encuentren seleccionados en ese momento, incluso
aunque slo haya uno de ellos.
import java.awt.*;
import java.awt.event.*;
class IHM {
public IHM(){
// Instancia un objeto List y coloca algunas cadenas sobre el,
// para poder realizar selecciones
List miLista = new List();
if( cadena.length != 0 ) {
System.out.println( "Seleccion Multiple de Elementos" );
for( int i=0; i < cadena.length; i++ )
System.out.println( " "+cadena[i] );
}
}
}
Luego, ya se encuentra el archivisto cdigo que instancia un objeto Button, que instancia y
registra un objeto ActionListener sobre ese botn, y que lo incorpora al Frame.
Las lneas de cdigo que se reproducen a continuacin, constituyen el cdigo que responde a un
evento Action producido sobre el objeto Button, y presenta en pantalla uno, o ms, elementos
seleccionados de la lista. En este caso, el mtodo empleado es getSelectedItem(), para crear un
array que mantenga todos los elementos que estn seleccionado en el momento de pulsar el
botn y que luego se presenta en pantalla.
if( cadena.length != 0 ) {
System.out.println( "Seleccion Multiple de Elementos" );
for( int i=0; i < cadena.length; i++ )
System.out.println( " "+cadena[i] );
}
}
}
APLICACIN PARA REALIZAR
OPERACIONES ARITMETICAS
Tpicos Avanzados Programacin
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Calculadora Basica");
jButton1.setText("Suma");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("Resta");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton3.setText("Multiplicacion");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jButton4.setText("Division");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jButton5.setText("Raz Cuadrada");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jLabel3.setText("Teclee un numero");
txtresultado.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtresultadoActionPerformed(evt);
}
});
jLabel4.setText("Resultado");
jButton6.setText("Limpiar pantalla");
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});
Numero1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Numero1ActionPerformed(evt);
}
});
jLabel2.setText("Teclee un numero");
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(layout.createSequentialGroup()
.addGap(45, 45, 45)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addComponent(jButton2)
.addComponent(jButton1)
.addComponent(jButton4)))
.addGroup(layout.createSequentialGroup()
.addGap(31, 31, 31)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addComponent(jButton5)
.addComponent(jButton3))))
.addGap(31, 31, 31)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILI
NG)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILI
NG)
.addComponent(jLabel3)
.addComponent(jLabel4))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG, false)
.addComponent(Numero2,
javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE)
.addComponent(txtresultado)))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(Numero1,
javax.swing.GroupLayout.PREFERRED_SIZE, 100,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jButton6)))
.addGroup(layout.createSequentialGroup()
.addGap(142, 142, 142)
.addComponent(jLabel1)))
.addContainerGap(24, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
.addGap(14, 14, 14)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASEL
INE)
.addComponent(jButton2)
.addComponent(jLabel2)
.addComponent(Numero1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASEL
INE)
.addComponent(jButton3)
.addComponent(Numero2,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASEL
INE)
.addComponent(jButton4)
.addComponent(jLabel4)
.addComponent(txtresultado,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 6,
Short.MAX_VALUE)
.addComponent(jButton5)
.addGap(4, 4, 4)
.addComponent(jButton6)
.addContainerGap())
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code
(optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default
look and feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Calculadora1.class.getName()).log(java.util.logg
ing.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Calculadora1.class.getName()).log(java.util.logg
ing.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Calculadora1.class.getName()).log(java.util.logg
ing.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Calculadora1.class.getName()).log(java.util.logg
ing.Level.SEVERE, null, ex);
}
//</editor-fold>