Sei sulla pagina 1di 28

COMPONENTES DE LA INTERFAZ GRAFICA DE USUARIO: PARTE 1

13.1 Introduccin
GUI: Interfaz grfica de usuario.
GUI: presenta un mecanismo amigable al usuario para interactuar con un programa: ya que a este
ltimo le proporciona una apariencia visual nica.
Las GUI: Las GUI se crean a partir de componentes de la GUI (tambin conocidos como controles o
widgets [accesorios de ventana]).
Componentes de la GUI: un componente de la GUI es un objeto con el cual interacta el usuario
mediante el ratn, el teclado, u otra forma de entrada, como el reconocimiento de voz.
13.2 Generalidades de los componentes de swing
Componente Descripcin
JLabel rea donde pueden mostrarse iconos o texto no editables.
JtextField rea en el que el usuario introduce datos desde el teclado. Esta rea tambin
puede mostrarse informacin.
Jbutton rea que, cuando el ratn hace clic sobre ella, desencadena un evento.
JcheckBox Componente de la GUI que puede estar o no seleccionado.
JcomboBok Lista desplegable de elementos, de los cuales el usuario puede seleccionar
uno haciendo clic en el o posiblemente escribiendo dentro del cuadro.
Jlist rea que contiene una lista de elementos, de los cuales el usuario puede
seleccionar cualquiera haciendo clic en el. Pueden seleccionarse varios
elementos.
Jpanel Contenedor en el cual pueden colocarse y organizarse componentes
Figura 13.2 Algunos componentes de la GUI bsicas.
En la figura 13.3 se muestra una jerarqua de herencia, la cual contiene clases que declaran
atributos y comportamientos comunes para la mayora de los componentes de Swing. La clase
Object es la superclase de la jerarqua de clases de java. La clase Component (paquete java.awt)
es una subclase de Object; la clase Container (paquete java.awt) es una subclase de JComponent;
y la clase JComponent (paquete javax.swing) es una subclase de Container. Una clase que
extienda a la clase Component es una Component. Por ejemplo la clase Container extiende a la
clase Component y la clase Component extiende a Object. Por lo tanto, una Container es una
Component y es una Object. Una clase que extiende a la clase Container es una Container. Por lo
tanto, una JComponent es una Container. Las clases Component pueden organizarse mediante
clases Container. Como una clase Container es una Component, una GUI puede estructurarse con
las clases Container adjuntas a otras clases Container.


Observacin de ingeniera de software
Para utilizar componentes de la GUI efectivamente, las jerarquas de herencia de javax.swing y
java.awt deben comprenderse; especialmente la clase Component, la clase Container, y la clase
JComponent, que declaran caractersticas comunes para la mayora de los componentes de Swing.


Figura 13.3 Superclases comunes de muchos de los componentes de swing.

La clase Component: declara atributos y comportamientos comunes de todas las subclases de
Component.

Recuerde: con muchas excepciones, la mayora de los componentes de la GUI extienden a la clase
Component en forma directa o indirecta.

Paint y repaint: Un mtodo que se origina en la clase Component y que hemos utilizado
frecuentemente en subprogramas (applets) es paint. Otro mtodo descrito previamente que se
origina en Component es repaint.

La clase Container: administra una coleccin de componentes relacionados.

Add y setLayout: un mtodo que se origina en la clase Container es add el cual se utiliza para
adjuntar componentes al panel de contenido (un objeto Container). Otro mtodo que se origina
en la clase Container es setLayout, el cual permite a un programa especificar el administrador de
esquemas que ayuda a un Container a posicionar y ajustar el tamao de sus componentes.

La clase JComponent: es la superclase de la mayora de los componentes de Swing. Esta clase
declara los atributos y comportamientos comunes de todas las subclases de JComponent,
incluyendo.

1. Una apariencia visual adaptable, la cual puede utilizarse para personalizar la apariencia de
los componentes (por ejemplo, para usarlos en plataformas especcas).

2. Teclas de mtodo abreviado (llamadas nemnicos) para un acceso directo a los
componentes de la GUI por medio del teclado.

3. Herramientas manejadoras de eventos comunes, para casos en los que varios
componentes de la GUI inician las mismas acciones en una aplicacin.

4. Breves descripciones del propsito de un componente de la GUI (lo que se conoce como
cuadros de informacin sobre herramientas o tool tips) que se muestran cuando el cursor
del ratn se coloca sobre el componente durante un breve periodo.

5. Soporte para tecnologas de ayuda, como lectores de pantalla Braille para las personas con
impedimentos visuales.

6. Soporte para la localizacin de la interfaz de usuario; es decir, personalizar la interfaz de
usuario para mostrarla en distintos lenguajes y utilizar las convenciones de la cultura local.

13.3 JLabel
Etiquetas: las etiquetas proporcionan instrucciones de texto o informacin en una GUI.
Las etiquetas: se definen mediante la clase JLabel, una subclase de JComponent.
Una etiqueta: una etiqueta muestra una sola lnea de texto de solo lectura, una imagen o texto
con una imagen.
etiqueta1 = new JLabel("Etiqueta con texto");
etiqueta1.setToolTipText("Esta es la etiqueta1");
contenedor.add(etiqueta1);
Se utiliza el mtodo setToolTipText (heredado por JLabel de Component) para especificar la
informacin sobre herramientas que se muestra cuando el usuario coloca el cursor del ratn sobre
la etiqueta en la GUI.

ImageIcon: soporta varios formatos de imagen incluyendo (GIF) Formato de intercambio de
grcos, (PNG) Grcos portables de red y (JPEG) Grupo de expertos unidos en fotografa. Los
nombres de archivos para cada uno de estos tipos termina con .gif, .png o .jpg (o .jpeg),
respectivamente.

Recuerde: la clase ImageIcon implementa a la interfaz Icon; un objeto ImageIcon es un objeto
Icon.




Icon insecto = new ImageIcon(getClass().getResource("AlbumArtSmall.jpg"));
etiqueta2 = new JLabel("Etiqueta con texto e icono", insecto, SwingConstants.LEFT);
etiqueta2.setToolTipText("Esta es la etiqueta2");
contenedor.add(etiqueta2);
Un objeto JLabel puede mostrar un Icon. En la lnea de arriba se utiliza otro constructor de JLabel
para crear una etiqueta que muestra el texto Etiqueta con texto e icono y el Icono al que
insecto hace referencia. El ltimo argumento para el constructor indica que el contenido de la
etiqueta se debe justificar a la izquierda, o alinear a la izquierda (es decir, el icono y el texto se
encuentran del lado izquierdo del rea de la etiqueta en la pantalla).

La expresin getClass().getResource( "AlbumArtSmall.jpg " ) invoca al mtodo getClass(heredado
de la clase Object) para obtener una referencia al objeto Class que representa la declaracin de la
clase PruebaEtiqueta. Despus, esa referencia se utiliza para invocar al mtodo getResource de
Class, el cual devuelve la ubicacin de la imagen como un URL. El constructor de ImageIcon utiliza
el URL para localizar la imagen, y despus la carga en la memoria. Como vimos en el captulo 1, la
JVM carga las declaraciones de las clases en la memoria, usando un cargador de clases. El cargador
de clases sabe en dnde se encuentra localizada en el disco cada clases que carga. El mtodo
getResource utiliza el cargador de clases del objeto Class para determinar la ubicacin de un
recurso, como un archivo de imagen. En este ejemplo, el archivo de imagen se almacena en la
misma ubicacin que el archivo PruebaEtiqueta.class. Las tcnicas aqu descritas permiten que
una aplicacin cargue archivos de imagen de ubicaciones que son relativas al archivo .class de
PruebaEtiqueta en disco.


SwingConstants: La interfaz SwingConstants (paquete javax.swing) declara un conjunto de
constantes enteras comunes (como SwingConstants.LEFT) que se utilizan con muchos
componentes de Swing. De manera predeterminada, el texto aparece a la derecha de una imagen
cuando una etiqueta Contiene tanto texto como una imagen.

setHorizontalAlignment y setVerticalAlignment: Las alineaciones horizontal y vertical de un
objeto JLabel se pueden establecer mediante los mtodos setHorizontalAlignment y
setVerticalAlignment, respectivamente.

Error comn de programacin
Una excepcin NullPointerException

Observacin de apariencia visual 13.3
Use cuadros de informacin sobre herramientas para agregar texto descriptivo a sus componentes
de GUI. Este texto ayuda al usuario a determinar el propsito del componente de GUI en la interfaz
de usuario.

JFrame: la clase JFrame proporciona los atributos y comportamientos bsicos de una ventana: una
barra de titulo en la parte superior, y botones para minimizar, maximizar y cerrar la ventana.

IDE (Integrated Development Environment) Entorno de desarrollo integrado.

Recuerde: java cuenta con varios administradores de esquemas que pueden ayudarle a colocar
los componentes.

IDE: Muchos entornos de desarrollo integrados (IDE) proporcionan herramientas de diseo de
GUIs, en las cuales podemos especicar el tamao y la ubicacin exactos de un componente en
forma visual utilizando el ratn, y despus el IDE genera el cdigo de la GUI por nosotros. Aunque
dichos IDEs pueden simplicar considerablemente la creacin de GUIs, sus capacidades son
distintas.

FlowLayout: es un administrador de esquemas.

FlowLayout: Uno de esos administradores es FlowLayout, en el cual los componentes de la GUI se
colocan en un contenedor de izquierda a derecha, en el orden en el que el programa los une al
contenedor. Cuando no hay ms espacio para acomodar los componentes de izquierda a derecha,
se siguen mostrando de izquierda a derecha en la siguiente lnea. Si se cambia el tamao del
contenedor, un esquema FlowLayout reordena los componentes para dar cabida a la nueva
anchura del contenedor, posiblemente con menos o ms las de componentes de la GUI.

Error comn de programacin
Si no agrega explcitamente un componente de GUI a un contenedor, el componente no se
mostrar cuando aparezca el contenedor en la pantalla.

Observacin de apariencia visual
Use cuadros de informacin sobre herramientas para agregar texto descriptivo a sus componentes
de GUI. Este texto ayuda al usuario a determinar el propsito del componente de GUI en la interfaz
de usuario.

JLabel: La clase JLabel cuenta con muchos mtodos para modicar la apariencia de una etiqueta,
una ves que se crea una instancia de sta.

etiqueta3 = new JLabel();
etiqueta3.setText("Etiqueta con icono y texto en parte inferior");
etiqueta3.setIcon(insecto);
etiqueta3.setHorizontalTextPosition(SwingConstants.CENTER);
etiqueta3.setVerticalTextPosition(SwingConstants.BOTTOM);
etiqueta3.setToolTipText("Esta es la etiqueta3");
contenedor.add(etiqueta3);
Se crea un objeto JLabel e invoca a su constructor sin argumentos. Al principio, dicha etiqueta no
tiene texto ni objeto Icon. La lnea siguiente utiliza el mtodo setText de JLabel para establecer el
texto mostrado en la etiqueta. El mtodo correspondiente getText obtiene el texto actual
mostrado en la etiqueta. La lnea siguiente utiliza el mtodo setIcon de JLabel para especicar el
objeto Icon a mostrar en la etiqueta. El correspondiente mtodo getIcon obtiene el objeto Icon
actual mostrado en una etiqueta. Las siguientes dos lneas utilizan los mtodos
setHorizontalTextPosition y setVerticalTextPosition de JLabel para especicar la siguiente posicin
del texto en la etiqueta. En este caso, el texto se centrar en forma horizontal y aparecer en la
parte inferior de la etiqueta. Por ende, el objeto Icon aparecer por encima del texto. Las
constantes de posicin horizontal en SwingConstants son LEFT, CENTER y RIGHT (gura 13.4).
Las constantes de posicin vertical en SwingConstants son TOP, CENTER y BOTTOM ( gura 13.4).
La lnea siguiente establece el texto de informacin sobre herramientas para etiqueta3. La ltima
lnea agrega etiqueta3 al panel de contenido.









Figura 13.4 Algunos componentes GUI bsicos.

Recuerde: De manera predeterminada, al cerrar una ventana sta simplemente se oculta.

13.4 Manejo de eventos
Las GUI: estn controladas por eventos (es decir, generan eventos cuando el usuario del programa
interacta con la GUI). Algunos eventos comunes (interacciones) son mover el ratn, hacer clic con
los botones del ratn, hacer clic en un botn de la pantalla, escribir en un campo de texto,
seleccionar un elemento de un men y cerrar una ventana. Cuando ocurre una interaccin con el
usuario, se enva un mensaje al programa. La informacin de los eventos de la GUI se almacenan
en un objeto de una clase que extiende a AWTEvent
Recuerde: . Cuando el usuario interacta con un componente de la GUI, la interaccin (conocida
como un evento) controla el programa para que realice una tarea. En la figura 13.5 se muestra una
jerarqua que contiene muchas de las clases de eventos del paquete java.awt.event. Algunas de
estas clases de eventos se describirn en este captulo y en el 14. Los tipos de eventos del paquete
java.awt.event se utilizan con componentes de AWT y de Swing. Los tipos de eventos adicionales,
especficos para Swing, se declaran en el paquete javax.swing.event.






















Figura 13.5 Algunas clases de eventos del paquete java.awt.event.

El mecanismo de manejo de eventos consta de tres partes:
- El origen del evento.
- El objeto del evento.
- El componente de escucha del evento.

El origen del evento: es el componente de la GUI especfico con el cual interacta el usuario.

El objeto del evento: encapsula la informacin acerca del evento que ocurri. Esta informacin
incluye una referencia al origen del evento y cualquier informacin especfica de ese evento que
pueda ser requerida por el componente de escucha del evento, para poder manejarlo.

El componente de escucha del evento: es un objeto que recibe la notificacin del origen del
evento cuando este ocurre; en efecto, escucha a la espera de un evento y se ejecuta en
respuesta a ese evento. El componente de escucha del evento recibe un objeto del evento cuando
se le notifica que ocurri este. Despus utiliza el objeto para responder al evento.

El origen del evento: se requiere para proveer mtodos que permitan a los componentes de
escucha ser registrados o no registrados. El origen del evento mantiene una lista de sus
componentes de escucha registrados, y notifica a cada uno de ellos cuando ocurre un evento.

El programador debe realizar dos tareas claves para procesar un evento de interfaz grfica de
usuario en un programa
- Debe registrar un componente de escucha de evento para el componente de la GUI que se
espera genere ese evento.
- Debe implementar un mtodo manejador del evento (o un conjunto de mtodos
manejadores del evento)

Manejadores de eventos: los mtodos manejadores de eventos se conocen comnmente
manejadores de eventos.

Un componente de escucha de eventos para un evento de GUI es un objeto de una clase que
implementa a una o ms de las interfaces de escucha de eventos de los paquetes java.awt.event y
javax.swing.event. Muchos de los tipos de componentes de escucha de eventos son comunes
para los componentes de Swing y de AWT. Dichos tipos se declaran en el paquete java.awt.event,
y algunos de ellos se muestran en la gura 13.6. Los tipos de escucha de eventos adicionales,
especcos para los componentes de Swing, se declaran en el paquete javax. swing.event
.


Figura 13.6 Algunas interfaces comunes de componentes de escucha de eventos del paquete
java.awt.event





13.5 Campos de texto.

JTextField y JPasswordField: los objetos JTextField y JPasswordField (paquete javax.swing) son
reas de una sola lnea en las que el usuario puede introducir textos mediante el teclado, o el
programa puede mostrar texto.

JPasswordField: un objeto JPasswordField muestra que los caracteres se estn escribiendo a
medida que el usuario los introduce, pero oculta los caracteres actuales, suponiendo que
representa una contrasea que no debe conoce nadie ms que aparte del usuario.

Recuerde: cuando el usuario escribe datos en uno de estos campos y oprime intro, ucurre un
evento de accin.

JTextField: la clase JTextField extiende a la clase JTextComponent (paquete javax.swing.text), la
cual proporciona muchas caractersticas comunes a los componentes basados en texto de Swing.

JPasswordField: la clase JPasswordField entiende a JTextField y agrega varios mtodos especficos
para el procesamiento de contraseas.

campoTexto1 = new JTextField(10);
Se crea campoTexto1 con 10 columnas de texto. El tamao en pixeles de una columna de texto se
determina en base a la anchura promedio de un carcter en el tipo de letra actual del campo de
texto.

campoTexto2 = new JTextField("Escriba el texto aqu");
contenedor.add(campoTexto2);
Se crea campoTexto2 con el texto inicial "Escriba el texto aqu" a mostrar en el campo de texto.
La anchura del campo de texto se determina en base a la anchura del texto predeterminado. En la
siguiente lnea se agrega campoTexto2 al panel de contenido.

campoTexto3 = new JTextField("Campo de texto no editable", 15);
campoTexto3.setEditable(false);
contenedor.add(campoTexto3);
se crea campoTexto3 y se llama al constructor de JTextField con dos argumentos: el texto
predeterminado "Campo de texto no editable" a mostrar y el nmero de columnas especificadas.
En la siguiente lnea se utiliza el mtodo setEditable (heredado en JTextField de la clase
JTextComponent) para hacer que el campo de texto no pueda editarse; es decir, el usuario no
podr modificar el texto en este campo de texto. En la ltima lnea se agrega campoTexto3 al
panel de contenido.

campoContrasenia = new JPasswordField("Texto oculto");
contenedor.add(campoContrasenia);
Se crea campoContrasenia con el texto "Texto oculto" a mostrar en el campo de texto. La anchura
de este campo de texto se determina en base a la anchura del texto predeterminado. En la
siguiente lnea se agrega campoContrasenia al panel de contenido.

ManejadorCampoTexto manejador = new ManejadorCampoTexto();
Se crea una instancia de la clase ManejadorCampoTexto y se asigna su referencia a manejador

campoTexto1.addActionListener(manejador);
campoTexto2.addActionListener(manejador);
campoTexto3.addActionListener(manejador);
campoContrasenia.addActionListener(manejador);
En estas lneas estn las instrucciones de registros de eventos que especifican al objeto de escucha
de eventos para cada componente de la GUI. El programa llama al mtodo addActionListener de
JTextField para registrar el evento para cada componente. El mtodo addActionListener recibe
como su argumento un objeto ActionListener. Por lo tanto, cualquier objeto de una clase que
implemente a la interfaz ActionListener (es decir, cualquier objeto que sea un ActionListener)
podr suministrarse como argumento para este mtodo. El objeto al que manejador hace
referencia es un ActionListener ya que su clase implementa a la interfaz ActionListener

Recuerde: El mtodo addActionListener recibe como su argumento un objeto ActionListener.

Nota Importante: Por lo tanto, cualquier objeto de una clase que implemente a la interfaz
ActionListener (es decir, cualquier objeto que sea un ActionListener) podr suministrarse como
argumento para este mtodo.

Observacin de ingeniera de software
El componente de escucha de eventos para cierto evento debe implementara la interfaz de escucha
de eventos apropiada.

getSource() para determinar el componente de la GUI con el cual interacto el usuario.

getActionCommand() El mtodo getActionCommand() de ActionEvent devuelve el texto en el
objeto JTextField que genero el evento.

getPassword(): se usa el mtodo getPassword() de JPasswordField para obtener la contrasea y
crear la cadena amostrar.

JTextField: Incluso hasta un objeto JTextField no editable puede generar un evento; simplemente
haga clic en el campo de texto y oprima intro



13.6 Como funciona el manejo de eventos.

Recuerde: todo componente del GUI soporta varios tipos de eventos, incluyendo eventos de
ratn, eventos de tecla y otros ms. Cuando ocurre un evento, este se despacha solamente a los
componentes de escucha de eventos del tipo apropiado.

El despachamiento: (dispaching) es simplemente el proceso por el cual se llama al mtodo
manejador de eventos apropiado en cada componente de escucha registrados, para el tipo de
evento que ocurri.

Cada tipo de evento tiene uno o ms interfaces de escucha de eventos correspondientes. Por
ejemplo, los eventos tipo ActionEvent son manejados por objetos ActionListener, los eventos tipo
MouseEvent son manejados por objetos MouseListener y MouseMotionListener, y los eventos
tipo KeyEvent son manejados por objetos KeyListener.

ID de evento: Cuando ocurre un evento, el componente de la GUI recibe un ID de evento nico, el
cual especica el tipo de evento. El componente de la GUI utiliza el ID de evento para decidir a
cul tipo de componente de escucha debe despacharse el evento, y para decidir cul mtodo
llamar en cada objeto de escucha. Para un ActionEvent, el evento se despacha al mtodo
actionPerformed de todos los objetos ActionListener registrados (el nico mtodo en la interfaz
ActionListener). En el caso de un MouseEvent, el evento se despacha a todos los objetos
MouseListener o MouseMotionListener registrados, dependiendo del evento de ratn que ocurra.
El ID de evento del objeto MouseListener determina cules de los varios mtodos manejadores de
eventos de ratn son llamados.

13.7 JButton.

Botn: Un botn es un componente en el que el usuario hace clic para desencadenar cierta
accin.

Tipos de botones:
- Botones de comando.
- Casillas de vericacin.
- Botones interruptores.
- Botones de opcin.

En la gura 11.14 se muestra la jerarqua de herencia de los botones de Swing que veremos en
este captulo. Como puede ver en el diagrama, todos los tipos de botones son subclases de
AbstractButton (paquete javax.swing), la cual declara las caractersticas comunes para los
botones de Swing. En esta seccin nos concentraremos en los botones que se utilizan
comnmente para iniciar un comando.







Figura 13.9 jerarqua de botones de Swing.

Botn de comando: un botn de comando genera un evento ActionEvent cuando el usuario hace
clic en l. Los botones de comando se crean con la clase JButton, la cual extiende a la clase
AbstractButton.

Etiqueta del botn: el texto en la cara de un objeto JButton se llama etiqueta del botn. Una GUI
puede tener muchos objetos JButton, pero cada etiqueta de botn debe generalmente ser nica
en las partes de la GUI en que se muestre.

Observacin de apariencia visual
Tener ms de un objeto JButton con la misma etiqueta hace que los objetos JButton sean ambiguos
para el usuario. Debe proporcionar una etiqueta nica para cada botn.

JButton: Un objeto JButton puede mostrar un objeto Icon. Para proveer al usuario un nivel
adicional de interaccin visual con la GUI,

botonSimple = new JButton("Boton Simple");
contenedor.add(botonSimple);
En la primera lnea se crea botonSimple con la etiqueta "Boton simple".
En la segunda lnea se agrega el botn al panel de contenido.
botonElegante = new JButton("Boton elegante", Android1);
botonElegante.setRolloverIcon(Android2);
contenedor.add(botonElegante);
En la lnea primera se crea botonElegante con el texto "Boton elegante" y el icono Android1. De
manera predeterminada, el texto se muestra a la derecha del icono. En la lnea segunda se utiliza
el mtodo setRolloverIcon (heredado de la clase AbstractButton) para especicar la imagen a
mostrar en el botn cuando el usuario coloque el ratn sobre el botn. En la lnea tercera se
agrega el botn al panel de contenido.


Observacin de apariencia visual
Como la clase AbstractButton soporta el mostrar texto e imgenes en un botn, todas las
subclases de Abstract-Button soportan tambin el mostrar texto e imgenes.

Observacin de apariencia visual 11.10
Al usar iconos de sustitucin para los objetos JButton, los usuarios reciben una retroalimentacin
visual que les indica que, al hacer clic en el ratn mientras el cursor est colocado encima del
botn, ocurrir una accin.

Recuerde: Los objetos JButton, al igual que los objetos JTextField, generan eventos ActionEvent
que pueden ser procesados por cualquier objeto ActionListener.

getActionCommand: Para un evento de JButton, el mtodo getActionCommand de ActionEvent
devuelve la etiqueta del botn.

Cmo acceder a la referencia this en un objeto de una clase de nivel superior desde una clase
interna
Cuando ejecute esta aplicacin y haga clic en uno de sus botones, observe que el dilogo de
mensaje que aparece est centrado sobre la ventana de la aplicacin. Esto ocurre debido a que la
llamada al mtodo showMessageDialog de JOptionPane utiliza a PruebaBoton.this, en vez de null
como el primer argumento. Cuando este argumento no es null, Representa lo que se denomina el
componente de GUI padre del dilogo de mensaje (en este caso, la ventana de aplicacin es el
componente padre) y permite centrar el dilogo sobre ese componente, cuando se muestra el
dilogo. PruebaBoton.this representa a la referencia this del objeto de la clase PruebaBoton de
nivel superior.

Observacin de ingeniera de software
Cuando se utiliza en una clase interna, la palabra clave this se reere al objeto actual de la clase
interna que se est manipulando. Un mtodo de la clase interna puede utilizar la referencia this del
objeto de la clase externa, si antepone a this el nombre de la clase externa y un punto, como en
PruebaBoton.this.

13.8 JCheckBox y JRadioButton.

Botones de estado
- JToggleButton
- JCheckBox
- JRadioButton

Botones de estado: los cuales tienen valores de encendido/apagado o verdadero/falso.

JCheckBox y JRadioButton: Las clases JCheckBox y JRadioButton son subclases de JToggleButton.


JCheckBox

campo = new JTextField("Observe el cambio en el estilo de tipo de letra", 25);
campo.setFont( new Font("Serif", Font.PLAIN, 14) );
contenedor.add(campo);
Una vez creado e inicializado el objeto JTextField en la segunda lnea se utiliza el mtodo setFont
(heredado por JTextField indirectamente de la clase Component) para establecer el tipo de letra
del objeto JTextField con un nuevo objeto de la clase Font (paquete java.awt). El nuevo objeto
Font se inicializa con "Serif" (un nombre de tipo de letra genrico que representa un tipo de letra
como Times, y se soporta en todas las plataformas de Java), estilo Font.PLAIN y tamao de 14
puntos.

negrita = new JCheckBox("Negrita");
contenedor.add(negrita);

cursiva = new JCheckBox("Cursiva");
contenedor.add(cursiva);
A continuacin, en las lneas 1ra y 4ta se crean dos objetos JCheckBox. La cadena que se pasa al
constructor de JCheckBox es la etiqueta de la casilla de vericacin que aparece a la derecha del
objeto JCheckBox de manera predeterminada.

Tipos de eventos:
- ItemEvent
- ActionEvent
- ListSelectionEvent

Cuando el usuario hace clic en un objeto JCheckBox, ocurre un evento ItemEvent. Este evento
puede manejarse mediante un objeto ItemListener, que debe implementar al mtodo
itemStateChanged.

ManejadorCasillaVerificacion manejador = new ManejadorCasillaVerificacion();
negrita.addItemListener(manejador);
cursiva.addItemListener(manejador);
En las lneas de arriba se crea una instancia de la clase ManejadorCasillaVericacion y se registra
con el mtodo addItemListener como componente de escucha para ambos objetos JCheckBox.

private class ManejadorCasillaVerificacion implements ItemListener
{
private int valNegrita = Font.PLAIN; //CONTROLA EL ESTILO DE TIPO DE LETRA NEGRITA
private int valCursiva = Font.PLAIN; //CONTROLA EL ESTILO DE TIPO DE LETRA CURSIVA

//RESPONDER A EVENTOS DE CASILLA DE VERIFICACION
public void itemStateChanged(ItemEvent evento)
{
//PROCESAR EVENTOS DE CASILLA DE VERIFICACION NEGRITA
if(evento.getSource() == negrita)
valNegrita = negrita.isSelected() ? Font.BOLD : Font.PLAIN;

//PROCESAR EVENTOS DE CASILLA DE VERIFICACION CURSIVA
if(evento.getSource() == cursiva)
valCursiva = cursiva.isSelected() ? Font.ITALIC : Font.PLAIN;

//ESTABLECER TIPO DE LETRA DEL CAMPO DE TEXTO
campo.setFont( new Font("Serif", valNegrita + valCursiva, 14) );
}//FIN DEL METODO itemStateChanged
En las lneas de arriba se declaran variables de instancia para la clase interna
ManejadorCasillaVericacion. En conjunto, estas variables representan el estilo de tipo de letra
para el texto que se muestra en el objeto JTextField. Al principio ambas son Font.PLAIN para
indicar que el tipo de letra no es negrita y no es cursiva.
El mtodo itemStateChanged es llamado cuando el usuario hace clic en el objeto JCheckBox
negrita o cursiva. Este mtodo utiliza evento.getSource() para determinar en cul de los objetos
JCheckBox se hizo clic. Si fue en la casilla negritaJCheckBox, en la lnea 51 se utiliza el mtodo
isSelected de JCheckBox para determinar si el botn est seleccionado (es decir, marcado). Si es
as, a la variable local valNegrita se le asigna Font.BOLD; en caso contrario, se le asigna
Font.PLAIN. Una instruccin similar se ejecuta si el usuario hace clic en cursivaJCheck-Box. Si esta
casilla de vericacin est seleccionada, a la variable local valCursiva se le asigna Font.ITALIC; en
caso contrario, se le asigna Font.PLAIN.

evento.getSource()Este mtodo se utiliza para determinar en cul de los componentes se gener
el evento.

isSelected: Este mtodo se utiliza para determinar si el botn est seleccionado (es decir,
marcado).

Font: Cada una de las constantes de Font representa un valor nico. Font.PLAIN tiene el valor 0,
por lo que si tanto valNegrita como valCursiva se establecen en Font.PLAIN, el tipo de letra tendr
el estilo simple.

Font.BOLD o Font.ITALIC Si uno de los valores es Font.BOLD o Font.ITALIC, el tipo de letra estar
en negrita o en cursiva, respectivamente. Si uno es BOLD y el otro es ITALIC, el tipo de letra estar
en negrita y en cursiva.

Clase interna: Una clase interna tiene una relacin especial con su clase de nivel superior; a la
clase interna se le permite acceder directamente a todas las variables de instancia y mtodos de la
clase de nivel superior.

JRadioButton

Los botones de opcin (que se declaran con la clase JRadioButton) son similares a las casillas de
vericacin, en cuanto a que tienen dos estados: seleccionado y no seleccionado (al que tambin
se le conoce como deseleccionado).


Botones de opcin: Sin embargo, los botones de opcin generalmente aparecen como un grupo,
en el cual slo un botn de opcin puede estar seleccionado en un momento dado.

Botones de opcin: Al seleccionar un botn de opcin distinto en el grupo se obliga a que todos
los dems botones de opcin del grupo se deseleccionen.

Botones de opcin: Los botones de opcin se utilizan para representar un conjunto de opciones
mutuamente exclusivas (es decir, no pueden seleccionarse varias opciones en el grupo al mismo
tiempo).

13.9 JComboBox

Un cuadro combinado (algunas veces conocido como lista desplegable) proporciona una lista de
elementos, de la cual el usuario puede seleccionar solamente uno.

Cuadro combinado: Los cuadros combinados se implementan con la clase JComboBox, la cual
extiende a la clase JComponent.

JComboBox: Los objetos JComboBox generan eventos ItemEvent, al igual que los objetos
JCheckBox y JRadioButton.

JComboBox: El primer elemento que se agrega a un objeto JComboBox aparece como el elemento
actualmente seleccionado al mostrar el objeto JComboBox. Los otros elementos se seleccionan
haciendo clic en el objeto JComboBox, el cual se expande en una lista de la cual el usuario puede
hacer una seleccin.

setMaximumRowCount: se utiliza el mtodo setMaximumRowCount de JComboBox para
establecer el mximo nmero de elementos a mostrar cuando el usuario haga clic en el objeto
JComboBox. Si hay elementos adicionales, el objeto JComboBox proporciona una barra de
desplazamiento que permite al usuario desplazarse por todos los elementos en la lista. El usuario
puede hacer clic en las echas de desplazamiento que estn en las partes superior e inferior de la
barra de desplazamiento para avanzar hacia arriba y hacia debajo de la lista, un elemento a la vez,
o puede arrastrar hacia arriba y hacia abajo el cuadro de desplazamiento que est en medio de la
barra de desplazamiento para desplazarse por la lista. Para arrastrar el cuadro de desplazamiento,
mantenga presionado el botn izquierdo del ratn mientras ste se encuentra sobre el cuadro de
desplazamiento, y mueva el ratn.

Observacin de apariencia visual
Establezca el nmero mximo de las en un objeto JComboBox a un valor que evite que la lista se
expanda fuera de los lmites de la ventana o subprograma en la que se utilice. Esta conguracin
asegurar que la lista se muestre correctamente cuando el usuario la expanda.

Clase interna annima: una forma especial de clase interna que se declara sin un nombre y, por lo
general, aparece dentro de la declaracin de un mtodo.

Clase interna annima: Al igual que las dems clases internas, una clase interna annima puede
acceder a los miembros de su clase de nivel superior.

Clase interna annima: Sin embargo, una clase interna annima tiene acceso limitado a las
variables locales del mtodo en el que est declarada.

Clase interna annima: Como una clase interna annima no tiene nombre, un objeto de la clase
interna annima debe crearse en el punto en el que se declara la clase.

Observacin de ingeniera de software
Una clase interna annima declarada en un mtodo puede acceder a las variables de instancia y
los mtodos del objeto de la clase de nivel superior que la declar, as como a las variables locales
nal del mtodo, pero no puede acceder a las variables locales no nal del mtodo.

getStateChange() El mtodo getStateChange() determina el estado de un objeto JToogleButton.

getSelectedIndex() determina el ndice del elemento seleccionado en el objeto JComboBox con el
mtodo getSelectedIndex().

IDE: Por lo general, un IDE permite al programador disear una GUI en forma visual, y despus el
IDE genera cdigo que implementa a la GUI. El programador slo inserta instrucciones en los
mtodos manejadores de eventos que declaran cmo manejar cada evento.

13.10 JList

Lista: Una lista muestra una serie de elementos, de la cual el usuario puede seleccionar uno o
ms.

Las listas: se crean con la clase JList, que extiende directamente a la clase JComponent.

JList: La clase JList soporta listas de seleccin simple (listas que permiten seleccionar solamente
un elemento a la vez) y listas de seleccin mltiple (listas que permiten seleccionar cualquier
nmero de elementos a la vez).

setVisibleRowCount(5) se usa el mtodo setVisibleRowCount(5) de JList para determinar el
nmero de elementos que sern visibles en la lista.

setSelectionMode() se utiliza el mtodo setSelectionMode de JList para especificar el modo de
seleccin de la lista.

ListSelectionModel: la clase ListSelectionModel (del paquete javax.swing) declara tres constantes
que especifican el modo de seleccin de un objeto JList: SINGLE_SELECTION (que permite
seleccionar solamente un elemento en un momento dado), SINGLE_INTERVAL_SELECTION (para
una lista de seleccin mltiple que permita la seleccin de varios elementos contiguos) y
MULTIPLE_INTERVAL_SELECTION (para una lista de seleccin mltiple que no restrinja el nmero
de elementos que pueden seleccionarse).

JList: A diferencia de un objeto JComboBox, un objeto JList no proporciona una barra de
desplazamiento si hay ms elementos en la lista que el nmero de las visibles. En este caso se
utiliza un objeto JScrollPane para proporcionar la capacidad de desplazamiento.




Cada objeto JFrame en realidad consiste de tres niveles:
- El fondo
- El panel de contenido
- El panel de vidrio

El panel de contenido: aparece en frente del fondo, y es en donde se muestran los componentes
de la GUI en el objeto JFrame.

El panel de vidrio: se utiliza para mostrar cuadros de informacin sobre herramientas y otros
elementos que deben aparecer enfrente de los componentes de la GUI en la pantalla.

El panel de contenido: oculta por completo el fondo del objeto JFrame; por ende, para cambiar el
color de fondo detrs de los componentes de la GUI, debe cambiar el color de fondo del panel de
contenido.

getContentPane: El mtodo getContentPane devuelve una referencia al panel de contenido del
objeto JFrame.

setBackground: el cual establece el color de fondo del panel de contenido.

getSelectedIndex() el mtodo getSelectedIndex() de JList devuelve el ndice del elemento
seleccionado.

13.11 Listas de seleccin mltiple

Listas de seleccin mltiple: permite al usuario seleccionar varios elementos de un objeto JList.

Una Lista SINGLE_INTERVAL_SELECTION: permite la seleccin de un rango contiguo de elementos
en la lista. Para ello, haga clic en el primer elemento y despus oprima (y mantenga oprimida) la
tecla Mays mientras hace clic en el ltimo elemento a seleccionar en el rango.

Una lista MULTIPLE_INTERVAL_SELECTION permite una seleccin de rango continuo, como se
describe para una lista SINGLE_INTERVAL_SELECTION. Dicha lista permite que se seleccionen
diversos elementos, oprimiendo y manteniendo oprimida la tecla Ctrl (a la que algunas veces se le
conoce como la tecla de Control ) mientras hace clic en cada elemento a seleccionar. Para
deseleccionar un elemento, oprima y mantenga oprimida la tecla Ctrl mientras hace clic en el
elemento por segunda vez.

//ESTABLECER OBJETO JList listaCopia
listaCopia = new JList();
listaCopia.setVisibleRowCount(5);
listaCopia.setFixedCellWidth(100);
listaCopia.setFixedCellHeight(15);
listaCopia.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
contenedor.add( new JScrollPane(listaCopia) );
En la 4ta lnea se utiliza el mtodo setFixedCellWidth de JList para establecer la anchura de
listaCopia en 100 pxeles. En la 5ta lnea se utiliza el mtodo setFixedCellHeight de JList para
establecer la altura de cada elemento en el objeto JList a 15 pxeles.
Listas de seleccin mltiple: una lista de seleccin mltiple no tiene un evento especfico asociado
para hacer selecciones mltiples.

Listas de seleccin mltiple: Una lista de seleccin mltiple no tiene eventos para indicar que un
usuario ha realizado varias selecciones.

//MANEJAR EVENTO DE BOTON
public void actionPerformed(ActionEvent evento)
{
//COLOCAR VALORES SELECCIONADOS EN ListaCopia
listaCopia.setListData( listaColores.getSelectedValues() );
}

El mtodo actionPerformed utiliza el mtodo setListData de JList para establecer los elementos
mostrados en listaCopia.

getSelectedValues() se hace una llamada al mtodo getSelectedValues() de listaColores, el cual
devuelve un arreglo de objetos Object que representan los elementos seleccionados en
listaColores. En este ejemplo, el arreglo devuelto se pasa como argumento al mtodo setListData
de listaCopia.

Muchos estudiantes se preguntan cmo puede usarse la referancia listaCopia en la lnea 40, aun
cuando la aplicacin no crea el objeto al cual hace referencia sino hasta la lnea 50. Recuerde que
el mtodo actionPerformed (lneas 37 a 41) no se ejecuta sino hasta que el usuario oprime el
botn botonCopia, lo cual no puede ocurrir sino hasta que el constructor termine su ejecucin y la
aplicacin muestre la GUI. En ese punto en la ejecucin de la aplicacin, listaCopia ya se ha
inicializado con un nuevo objeto JList.

13.12 Manejos de eventos de ratn

MouseListener y MouseMotionListener: son interfaces para manejar eventos de ratn.

MouseInputListener: El paquete javax.swing.event contiene la interfaz MouseInputListener, la
cual extiende a las Interfaces MouseListener y MouseMotionListener para crear una sola interfaz
que contiene todos los mtodos de MouseListener y MouseMotionListener.

Los mtodos de las interfaces MouseListener y MouseMotionListener se sintetizan en la figura
13.16
Figura: 13.16 Mtodos de la interfaz MouseListener y MouseMotionListener.

MouseEvent: cada uno de los mtodos manejadores de eventos de ratn toma un objeto
MouseEvent como su argumento.

MouseEvent: Un objeto MouseEvent contiene informacin acerca del evento de ratn que
ocurri, incluyendo las coordenadas x y y de la ubicacin en donde ocurri el evento. Estas
coordenadas se miden desde la esquina superior izquierda del componente de la GUI en el que
ocurri el evento.

Coordenada x: Las coordenadas x empiezan en 0 y se incrementan de izquierda a derecha.

Coordenada y: Las coordenadas y empiezan en 0 y se incrementan de arriba hacia abajo.

InputEvent: Adems, los mtodos y constantes de la clase InputEvent (superclase de MouseEvent)
permiten a una aplicacin determinar cul fue el botn del ratn que oprimi el usuario.
15 MANEJO DE EXCEPCIONES
15.1 Introduccin
Excepcin: Una excepcin es la indicacin de un problema que ocurre durante la ejecucin de un
programa.

Excepcin: El nombre excepcin implica que el problema ocurre con poca frecuencia; si la
regla es que una instruccin generalmente se ejecuta en forma correcta, entonces la excepcin
a la regla es cuando ocurre un problema.

El manejo de excepciones le permite crear aplicaciones que puedan resolver (o manejar) las
excepciones.

Manejo de excepciones: En muchos casos, el manejo de una excepcin permite que el programa
contine su ejecucin como si no se hubiera encontrado el problema.

Programas tolerantes a fallas y robustos (es decir, programas que traten con los problemas que
puedan surgir sin dejar de ejecutarse).

Tip para prevenir errores
El manejo de excepciones ayuda a mejorar la tolerancia a fallas de un programa.

15.2 Generalidades acerca del manejo de excepciones

Con frecuencia, los programas evalan condiciones que determinan cmo debe proceder la
ejecucin. Considere el siguiente seudocdigo:

Realizar una tarea
Si la tarea anterior no se ejecut correctamente
Realizar el procesamiento de los errores
Realizar la siguiente tarea
Si la tarea anterior no se ejecut correctamente
Realizar el procesamiento de los errores

En este seudocdigo empezamos realizando una tarea; despus, evaluamos si esa tarea se ejecut
correctamente. Si no lo hizo, realizamos el procesamiento de los errores. De otra manera,
continuamos con la siguiente tarea. Aunque esta forma de manejo de errores funciona, al
entremezclar la lgica del programa con la lgica del manejo de errores el programa podra ser
difcil de leer, modicar, mantener y depurar; especialmente en aplicaciones extensas.

Tip de rendimiento
Si los problemas potenciales ocurren con poca frecuencia, al entremezclar la lgica del programa y
la lgica del manejo de errores se puede degradar el rendimiento del programa, ya que ste debe
realizar pruebas (tal vez con frecuencia) para determinar si la tarea se ejecut en forma correcta, y
si se puede llevar a cabo la siguiente tarea.

Java: permite al programador tratar con el manejo de excepciones fcilmente, desde el comienzo
de un proyecto.

Observacin de ingeniera de software
Evite usar el manejo de excepciones para manipular los problemas en el flujo de control
convencional. Manejar un nmero extenso de casos de excepciones puede ser incmodo: adems,
los programas con un nmero extenso de casos de excepciones pueden ser difciles de leer y de
mantener.

Manejo de excepciones: el manejo de excepciones est diseado para procesar errores
sincrnicos, que ocurren cuando se ejecuta una instruccin.

Errores sincrnicos:
- ndices fuera de rango.
- Desbordamiento aritmtico (es decir, un valor fuera del rango representable de valores)
- Divisin entre cero.
- Parmetros invlidos de mtodo.
- La interrupcin de subprocesos
- Asignacin fallida de memoria (debido a la falta de sta)

Manejo de excepciones: el manejo de excepciones no est diseado para procesar los problemas
asociados con los eventos asncronos (por ejemplo, completar las operaciones de E/S de disco, la
llegada de mensajes de red, clics del ratn y pulsaciones de tecla), los cuales ocurren en paralelo y
en forma independiente de, el flujo de control del programa.

Observacin de ingeniera de software
Trate de incorporar una estrategia de manejo de excepciones en un sistema desde el comienzo del
proceso de diseo. Puede ser difcil incluir un manejo efectivo de excepciones una vez que se haya
implementado el sistema.

Manejo de excepciones: el mecanismo de manejo de excepciones tambin es til para procesar
los problemas que ocurren cuando un programa invoca a los mtodos de otra clase.

Tip de rendimiento
Cuando no ocurren excepciones, el cdigo para manejar excepciones afecta muy poco, o nada, al
rendimiento del programa. Debido a esto, los programas que implementan el manejo de
excepciones operan con mucho ms eficiencia que los programas que entremezclan el cdigo para
manejo de errores con la lgica del programa.

Manejo de excepciones: el manejo de excepciones est dirigido a situaciones en las que el
mtodo que detecta un problema es incapaz de manejarlo. Dicho mtodo lanza una excepcin. No
hay garanta de que habr un manejador de excepciones (cdigo que se ejecuta cuando el
programa detecta una excepcin) para procesar ese tipo de excepcin. Si existe, el manejador de
excepciones atrapa y maneja a esa excepcin. El resultado de una excepcin no atrapada a
menudo produce efectos adversos y podr terminar con le ejecucin del programa.

try: java proporciona las instrucciones try para permitir el manejo de excepciones

try: una instruccin try consiste de la palabra clave try, seguida por llaves ( { } ) que delimitan a ese
bloque try.

try: el bloque try contiene instrucciones que podran ocasionar excepciones, e instrucciones que
no deberan ejecutarse en caso de que ocurra una excepcin.

catch: debe haber por lo menos una clausula catch (a la que tambin se le llama manejador de
excepciones) o una clausula finally inmediatamente despus del bloque try.

catch: cada clausula catch especifica entre parntesis un parmetro de excepcin, el cual
identifica al tipo de excepcin que puede procesar el manejador. El nombre del parmetro de
excepcin permite que la clusula catch interacte con el objeto de excepcin atrapada.

finally: despus del ltimo manejador catch, una clausula finally opcional proporciona cdigo que
siempre se ejecuta, sin importar que ocurra o no una excepcin.

Error comn de programacin
Es un error de sintaxis colocar cdigo entre un bloque try y su correspondiente clausula catch.

Error comn de programacin
Especificar una lista de parmetros de catch separada por comas es un error de sintaxis. Una
instruccin catch solo puede tener un parmetro.

Error comn de programacin
Es un error de compilacin atrapar el mismo tipo en dos clausulas catch distintas, asociadas con un
bloque try especifico.

Punto de lanzamiento: el punto en el programa en el que ocurra una excepcin (es decir, la
ubicacin en la que un mtodo detecta y lanza una excepcin) se conoce como el punto de
lanzamiento.

Modelo de terminacin del manejo de excepciones.
Si ocurre una excepcin en un bloque try, ese bloque termina inmediatamente y el control del
programa se transfiere a la primera clausula catch que va despus del bloque try.

try: el bloque try que encierra a una excepcin lanzada termina al ocurrir esa excepcin.

catch: a continuacin, el programa busca la primera clausula catch que pueda procesar el tipo de
excepcin que ocurri. El programa ubica la clusula catch que concuerde, comparando el tipo de
la excepcin lanzada con el tipo del parmetro de excepcin de cada clusula catch, hasta que el
programa encuentre una concordancia. La concordancia ocurre si los tipos son idnticos, o si el
tipo de excepcin lanzada es una subclase del tipo del parmetro de excepcin. Cuando ocurre
una concordancia, se ejecuta el cdigo contenido dentro del manejador catch concordante.
Cuando una clausula catch termina de procesarse, las variables locales que se declaran dentro de
la clusula (incluyendo su parmetro) quedan fuera del alcance. Cualquier clausula catch restante
que corresponda a ese bloque try se ignora, y la ejecucin continua en la primera lnea de cdigo
despus de la secuencia try/catch.

Observacin de ingeniera de software
Si usted sabe que un mtodo podra lanzar una excepcin, incluya el cdigo apropiado para
manejar excepciones en su programa. Esto har que su programa sea ms robusto.

try: si no ocurren excepciones en un bloque try, el programa ignora el (los) manejador(es) para ese
bloque.

Recuerde: la ejecucin del programa contina con la siguiente instruccin que haya despus de la
secuencia try/catch.

finally: si aparece una clausula finally despus de la ltima clausula catch, la clusula finally se
ejecutar sin importar que ocurra o no una excepcin.

Recuerde: si ocurre una excepcin en un mtodo y no es atrapada, o si la instruccin que produjo
la excepcin no se encuentra dentro de un bloque try, el mtodo que contiene la instruccin
termina inmediatamente y el programa trata de localizar un bloque try circundante en el mtodo
que hizo la llamada.

throws: en la declaracin de un mtodo, una clausula throws especifica las excepciones que lanza
ese mtodo. Esta clusula aparece despus de la lista de parmetros y antes del cuerpo del
mtodo. La clusula contiene una lista separada por comas de las excepciones que lanzara el
mtodo, si ocurre un problema cuando este se ejecute. Dichas excepciones pueden ser lanzadas
por instrucciones en el cuerpo, o pueden lanzarse mediante los mtodos que se llamen en los
cuerpos.

throws: Un mtodo puede lanzar excepciones de las clases que se listen en su clusula throws, o
en la de sus subclases.

15.2 Ejemplo de manejo de excepciones: Divisin entre cero

Recuerde: java no permite la divisin entre cero, en la aritmtica con enteros. Cuando esto ocurre,
java lanza una excepcin ArithmeticException.

Recuerde: [Nota: Java s permite la divisin entre cero con valores de punto otante. Dicho clculo
produce como resultado el valor de in nito, que se representa en Java como un valor de punto
otante (pero en realidad aparece como la cadena Innity)].

campoEntrada2.addActionListener(this);
registra el objeto PruebaDivisionEntreCero como el objeto ActionListener para el objeto
JTextField campoEntrada2.

parseInt: el mtodo parseInt lanza una excepcin NumberFormatException si su argumento no
representa a un entero valido.

Las excepciones: en general, las excepciones pueden surgir a travs del cdigo mencionado en
forma explcita en un bloque try, mediante llamadas a otros mtodos o incluso a travs de
llamadas a mtodos profundamente anidadas, incluidas por el cdigo en un bloque try.

try: si el cdigo en el bloque try no lanza (throw) una excepcin, entonces se ignoran los
manejadores catch que siguen despus de ese bloque try, y la ejecucin se reanuda en la primera
lnea de cdigo que est despus de los manejadores catch.

catch(NumberFormatException exceptionFormatNumero)
{
JOptionPane.showMessageDialog(this, "Debe escribir dos enteros", "Formato de nmero
invalido", JOptionPane.ERROR_MESSAGE);
}
Contiene la clusula catch para una excepcin NumberFormatException.
Esta clusula catch especifica que atrapar los objetos de excepcin de tipo
NumberFormatException (este tipo concuerda con el tipo de objeto de excepcin lanzada en el
mtodo Integer.ParseInt)

catch(ArithmeticException excepcionAritmetica)
{
JOptionPane.showMessageDialog(this, excepcionAritmetica.toString(),
"Excepcion aritmetica", JOptionPane.ERROR_MESSAGE);
}
Contiene la clusula catch para una excepcin ArithmeticException.
Esta clusula catch especifica que atrapar los objetos de excepcin de tipo ArithmeticException.

Recuerde: en general, cuando el programa detecta una excepcin mientras ejecuta un bloque try,
atrapa la excepcin en una clausula catch que especifica un tipo de excepcin apropiado (es decir,
el tipo en la clusula catch concuerde exactamente con el tipo de excepcin lanzada, o es una
superclase del tipo de excepcin lanzada).

Recuerde: solo la clusula catch que concuerde se ejecutar cuando ocurra una excepcin.

Recuerde: despus de ejecutar una clausula catch, el flujo de control de un programa contina
con la primera instruccin que esta despus de la ltima clusula catch.

Tip para prevenir errores
Con el manejo de excepciones, un programa puede seguir ejecutndose despus de hacerse cargo
de un problema. Esto ayuda a asegurar que se desarrollen aplicaciones robustas, que contribuyan
a lo que se conoce como computacin de misin, o computacin critica para los negocios.

//PROCESAR LOS INTENTOS DE DIVIDIR ENTRE CERO
catch(ArithmeticException excepcionAritmetica)
{
JOptionPane.showMessageDialog(this, excepcionAritmetica.toString(),
"Excepcion aritmetica", JOptionPane.ERROR_MESSAGE);
}
El manejador ArithmeticException convierte la excepcin en una cadena mediante toString(), y
muestra est cadena como el mensaje en un cuadro de dialogo de mensaje de error.



15.3 Jerarqua de Excepciones en java


Figura 15.2 Jerarqua de herencia para la clase Throwable.

La gura 15.2 muestra una pequea porcin de la jerarqua de herencia para la clase Throwable
(una subclase de Object), que es la superclase de la clase Exception. Slo pueden usarse objetos
Throwable con el mecanismo para manejar excepciones. La clase Throwable tiene dos subclases:
Exception y Error. La clase Exception y sus subclases (por ejemplo, RuntimeException, del
paquete java.lang, e IOException, del paquete java.io) representan situaciones excepcionales que
pueden ocurrir en un programa en Java, y que pueden ser atrapadas por la aplicacin. La clase
Error y sus subclases (por ejemplo, OutOfMemoryError) representan situaciones anormales que
podran ocurrir en la JVM. Los errores tipo Error ocurren con poca frecuencia y no deben ser
atrapados por las aplicaciones; por lo general, no es posible que las aplicaciones se recuperen de
los errores tipo Error. [Nota: la jerarqua de excepciones de Java contiene cientos de clases. En la
API de Java puede encontrar informacin acerca de las clases de excepciones de Java. La
documentacin para la clase Throwable se encuentra en
java.sun.com/javase/6/docs/api/java/lang/Throwable.html. En este sitio puede buscar las
subclases de esta clase para obtener ms informacin acerca de los objetos Exception y Error de
Java].

Java clasica a las excepciones en dos categoras:
- excepciones vericadas
- excepciones no vericadas.

Recuerde: El tipo de una excepcin determina si es vericada o no vericada.
Todos los tipos de excepciones que son subclases directas o indirectas de la clase
RuntimeException (paquete java.lang) son excepciones no vericadas. Esto incluye a las
excepciones que ya hemos visto, como las excepciones ArrayIndexOutOfBoundsException y
ArithmeticException (que se muestran en la gura 15.2). Todas las clases que heredan de la clase
Exception pero no de la clase RuntimeException se consideran como excepciones vericadas; y las
que heredan de la clase Error se consideran como no vericadas.

Recuerde: El compilador verica cada una de las llamadas a un mtodo, junto con su declaracin,
para determinar si el mtodo lanza excepciones vericadas. De ser as, el compilador asegura que
la excepcin vericada sea atrapada o declarada en una clusula throws.

http://articulo.mercadolibre.com.mx/MLM-453346090-packs-de-4-tangas-en-talla-ch-o-med-
_JM

23 CONECTIVIDAD DE BASE DE DATOS EN JAVA CON JDBC

Base de datos: es una coleccin organizada de datos.

DBMS: sistema de administracin de base de datos.

DBMS: proporciona los mecanismos para almacenar y organizar datos en una manera consistente
con el formato de la base de datos.

DBMS: los sistemas de administracin de base de datos permiten el acceso y almacenamiento de
datos sin necesidad de preocuparse por la representacin interna.

Bases de datos relacionales: en la actualidad, los sistemas de base de datos ms populares son las
bases de datos relacionales.

SQL: es el lenguaje estndar internacional que se utiliza casi universalmente con las bases de datos
relacionales para realizar consultas (es decir, para solicitar informacin que satisfaga ciertos
criterios) y para manipular datos.

RDBMS: algunos sistemas de administracin de base de datos relacionados. Son:
- SQL server.
- Oracle.
- Sybase.
- DB2.
- Informix.
- MySQL.

API JDBC: los programas en java se comunican con las bases de datos y manipulan sus datos
utilizando la API JDBC.

Controlador de JDBC: un controlador de JDBC implementa la interfaz para una base de datos
especifica.
DBMS: la mayora de los sistemas administradores de base de datos populares incluyen ahora
controladores de JDBC.

Base de datos relacional: es una representacin lgica de datos que permiten acceder a estos sin
necesidad de considerar la estructura fsica de estos datos.

Base de datos relacional: una base de datos relacional almacena los datos en tablas.

Tablas: las tablas estn compuestas de filas, y las filas de columnas en la que se almacenan los
valores.

Clave principal: una clave principal es una columna (o grupo de columnas) en una tabla que tienen
un valor nico, el cual no puede duplicarse en las dems filas. Esto garantiza que cada fila se pueda
identificarse por su clave principal.

Columna: cada columna de una tabla representa un atributo de datos distinto.

23.4.1 Consulta bsica SELECT

Consulta SQL: extraen informacin de la base de datos.

Consulta SQL: selecciona filas y columnas de una o ms tablas en una base de datos.

SELECT: las selecciones se llevan a cabo mediante consultas SELECT

23.4.1 Clausula WHERE

Clausula WHERE: en la mayora de los casos es necesario localizar, en una base de datos, filas que
cumplan con ciertos criterios de seleccin (formalmente llamados predicados).

Clausula WHERE: SQL utiliza la clusula WHERE en una consulta SELECT para especificar los
criterios de seleccin para la consulta.

WHERE: Los criterios de la clusula WHERE pueden contener los operadores <, >, <=, >=, =, <> y
LIKE.

LIKE: El operador LIKE se utiliza para relacionar patrones con los caracteres comodines porcentaje
(%) y guin bajo (_). El relacionar patrones permite a SQL buscar cadenas que coincidan con un
patrn dado.

Un patrn que contenga un carcter de porcentaje (%) busca cadenas que tengan cero o ms
caracteres en la posicin del carcter de porcentaje en el patrn.

Potrebbero piacerti anche