Vous êtes sur la page 1sur 50

Anexo A Resumen de Clases AWT

Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)


AWT son las iniciales de Abstract Window Toolkit, y es una librera de clases bsicas ya desarrolladas y que forman parte del lenguaje JAVA. Algunas de stas clases, las imprescindibles, an cuando se utilicen clases Swing, las presentaremos a continuacin ponindo nfasis en la jerarqua de clases, datos, constructores y mtodos con un ejemplo aplicativo y que esperamos contribuya al lector a un mejor entendimiento de su uso. Solamente estamos describiendo las clases que son heredadas por algunas clases de la librera SWING y aquellas que no tienen equivalentes y son necesarias en cualquier programa. Clases de distribucin de objetos ( Layouts ): Existen varias formas de distribuir los objetos en un contenedor, en un panel, en un frame o en un applet. Veamos a continuacin algunas de ellas, talvez las ms comunes en su uso. FlowLayout, GridLayout, BorderLayout, BoxLayaut, Libre. Clase FlowLayout : Jerarqua de clases y herencia: java.lang.Object java.awt.FlowLayout FlowLayout acomoda a los objetos en una sola direccin: de izquierda a derecha o de derecha a izquierda segn el atributo de direccin que se le indique al constructor. Esta distribucin es usada, generalmente, para colocar objetos en un panel, distribuidos uniformemente uno a continuacin del otro. Ejemplo 01: Disee una aplicacin utilizando distribucin FlowLayout para 4 botones y un area de texto.

Observe que los objetos tienen distribucin FlowLayout con orientacin y separacin entre ellos por defecto. Creamos un nuevo proyecto de nombre Ejemplo01: Clic en File, New Project Ahora, creamos un nuevo paquete para nuestro proyecto. Clic derecho en el proyecto Ejemplo01, nuevo paquete de nombre ejemplo01.

07/07/2010

www.parainformaticos.com

Pgina - 1 -

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
Luego, creamos nuestro frame de nombre Principal: clic derecho en el paquete creado ejemplo01, New JFrame Form Si quiere poner un titulo en la ventana, haga clic en el frame y en la ventana de propiedades ubique ttulo y escriba FlowLayout. En la ventana Palette elegimos un panel para colocarlo al centro del frame:

Agrandamos el panel a nuestro gusto. Por defecto los paneles tienen distribucin libre (Free Design). Para cambiar de distribucin haga clic derecho en el panel, elija SetLayout y luego FlowLayout.

Colocamos los objetos de tal manera que logremos el siguiente diseo:

07/07/2010

www.parainformaticos.com

Pgina - 2 -

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
jPanel1 con distribucin FlowLayout donde colocamos 4 botones y un rea de texto. Automaticamente, NetBeans coloca un ScrollPane debajo del TextArea.

Observe la distribucin de los objetos y

los nombres de variable utilizados. Para poner nombres de variable a los objetos: Clic derecho en el objeto y elegimos change variable name: btnNorte, btnSur, btnEste, btnOeste, txtSalida. Al panel y al scrollPane lo dejamos con el nombre por defecto que le pone la herramienta visual. Ahora vamos a programar la accin de cada botn: doble clic en el botn Norte o Clic derecho en el botn Norte, Events, Action, ActionPerformed:

Y nos lleva al cdigo java para escribir lo que est en negrita. private void btnNorteActionPerformed(java.awt.event.ActionEvent evt) { txtSalida.setText("Norte"); } Ya puede ejecutar su aplicacin presionando F6. Ahora usted programe los dems botones para completar la aplicacin. Clase GridLayout : Jerarqua de clases y herencia:

07/07/2010

www.parainformaticos.com

Pgina - 3 -

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
java.lang.Object

java.awt.GridLayout La clase GridLayout es un administrador de distribucin que distribuye a los objetos en forma de tabla (filas por columnas). El contenedor es dividido en rectangulos de igual tamao y coloca un objeto en cada rectangulo. Ejemplo 02: Disee una aplicacin que aplique distribucin GridLayout de 2 filas por 1 columna para el panel principal y distribucin GridLayout de 1 fila por 4 columnas para el panel de la primera fila. Luego, coloquer 4 botones en ste segundo panel. En la segunda fila coloque un area de texto sobre un scroll.

Creamos un nuevo proyecto de nombre Ejemplo02 y un nuevo paquete de nombre ejemplo02. Ahora, clic derecho en el paquete creado (ejemplo02) elegimos New JFrame Form de nombre Principal. Si quiere poner un titulo en la ventana, haga clic en el frame y en la ventana de propiedades ubique ttulo y escriba GridLayout. Ahora colocamos un panel (jPanel1) en el frame al quel le aplicamos distribucin GridLayout. En la ventana de propiedades fijamos las filas y columnas para la distribucin GridLayout del panel : (1 columna, 2 filas): HorizontalGap y VerticalGap sirven para definir el espacio entre objetos horizontal y verticalmente. En este caso lo dejamos con 0. Seleccionamos el jPanel1 para hacer el siguiente diseo:

07/07/2010

www.parainformaticos.com

Pgina - 4 -

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

jPanel1 con distribucin GridLayout de 1 columna, 2 filas. En la primera fila colocamos otro panel (jPanel2) con distribucin GridLayout de 4 columnas, 1 fila donde colocamos los botones. En la segunda fila colocamos un rea de texto. En la ventana de navegacin seleccionamos el panel jPanel2 sobre el cual pondremos 4 botones. Automticamente se acomodan en una sola fila: Observe la distribucin de los objetos en el frame y los nombres de variable utilizados. La ventana de diseo quedara as:

Ahora programamos la accin de cada botn. Haga doble clic en el botn Norte y escriba lo que esta en negrita: private void btnNorteActionPerformed(java.awt.event.ActionEvent evt) { txtSalida.setText("Norte"); } Ya puede ejecutar su aplicacin presionando F6 Ahora usted programe los dems botones para completar la aplicacin.

07/07/2010

www.parainformaticos.com

Pgina - 5 -

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

Clase BorderLayout : Jerarqua de clases y herencia: java.lang.Object java.awt.BorderLayout Por herencia, la clase BorderLayout y sus clases descendientes (subclases directas) podrn utilizar los datos y/o mtodos de la clase Object. Una distribucin BorderLayout arregla y dimensiona sus componentes en 5 regiones: norte, sur, este, oeste, y centro. Cada regin no puede contener ms de un componente, y es identificada por su correspondiente constante NORTH, SOUTH, EAST, WEST, y CENTER. Cuando agregue un componente al container con BorderLayout, use una de stas constantes: BorderLayout.CENTER, BorderLayout.NORTH, etc. Ejemplo 03: Disee una aplicacin utilizando distribucin BorderLayout (norte, sur, este, oeste y centro) para obtener la siguiente pantalla:

Nuevo Proyecto de nombre Ejemplo03, nuevo paquete de nombre ejemplo03. Ahora, clic derecho en el paquete creado (ejemplo03) elegimos New JFrame Form de nombre Principal.

07/07/2010

www.parainformaticos.com

Pgina - 6 -

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

Si quiere poner un titulo en la ventana, haga clic en el frame y en la ventana de propiedades ubique ttulo y escriba BorderLayout. Luego colocamos un panel en el centro del frame y con clic derecho elegimos setLayout tipo BorderLayout Seleccionamos en la parte izquierda el panel (jPanel1) con distribucin BorderLayout y colocamos los botones, y el rea de texto. Observe que automticamente se van colocando los objetos en los puntos cardinales del panel. Cambiamos el texto de los botones ( clic derecho, edit text) y le cambiamos el nombre de variable (clic derecho, change variable name ) Observe la distribucin de los objetos y los nombres de variable utilizados.

La ventana de diseo quedara as:

Ahora, damos doble clic en el botn Norte para programar su accin, escribiendo lo que aparece en negrita: private void btnNorteActionPerformed(java.awt.event.ActionEvent evt) { txtSalida.setText("Norte"); } Ya puede ejecutar su aplicacin presionando F6

07/07/2010

www.parainformaticos.com

Pgina - 7 -

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

Ahora usted programe los dems botones para completar la aplicacin. Distribucin Libre (Free Layout) Esta distribucin es la que est configurada por defecto para todos los contenedores. Consiste en que la colocacin de los componentes en un contenedor sea a libertad del programador. Esta distribucin es simple y a veces rpida de hacer, sin embargo, no siempre se logran diseos personalizados por lo que ser recomienda el uso intensivo de las distribuciones anteriores. Ejemplo 04: Disee una aplicacin utilizando una distribucin libre para 4 botones y un area de texto similar a la que se muestra en la siguiente figura:

Nuevo proyecto de nombre Ejemplo04, nuevo paquete de nombre ejemplo04, clic derecho en el paquete ejemplo04 y elegimos nuevo JFrame Form de nombre Principal donde hacemos el siguiente diseo: Por defecto los contenedores tienen distribucin libre (Free Design). Lo comprobamos haciendo clic derecho en el frame, setLayout. Ahora, colocamos un panel, 4 botones, un scroll y una area de texto distribuyendolos libremente: Cambiamos el texto y los nombres de variables de los objetos haciendo clic derecho Edit Text y clic derecho Change variable name respectivamente.

07/07/2010

www.parainformaticos.com

Pgina - 8 -

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

Observe en la parte inferior izquierda la distribucin de los objetos y los nombres de variable utilizados. Utilice la propiedad ttle del JFrame para escribir un ttulo (Free Design). Ahora, para programar la accin del botn Uno hacemos doble clic en l y NetBeans nos lleva al cdigo java donde debemos escribir lo que est en negrita: private void btnUnoActionPerformed(java.awt.event.ActionEvent evt) { txtSalida.setText("Uno"); } Ya puede ejecutar su aplicacin presionando F6 Ahora usted programe los dems botones para completar la aplicacin. La distribucin BoxLayout es muy similar a la distribucin FlowLayout. La diferencia es que mientras FlowLayout distribuye los objetos en forma centrada, BoxLayout distribuye los objetos cubriendo todo el ancho, o alto, del panel que tiene dicha distribucin. Clase Color : Jerarqua de clases y herencia: java.lang.Object java.awt.Color Por herencia, la clase Color y sus clases descendientes (subclases directas) podrn utilizar los datos y/o mtodos de la clase Object. La clase Color es usada con el formato RGB. Cualquier color tiene un valor entero entre 0 y 255 que representa la intensidad del color. Un valor 255 significa que el color es completamente transparente

07/07/2010

www.parainformaticos.com

Pgina - 9 -

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
(blanco) y un valor de 0 significa que el color es completamente opaco (negro). La combinacin de valores produce colores personalizados. La clase Color tiene atributos de mbito static que pueden ser utilizados directamente con la Clase. Los nombres de estos atributos estn en ingls y representan el color especfico. Por ejm. Color.black representa el color negro, Color.yellow representa el color amarillo, etc. La clase Color tiene constructores con parmetros a travs de los cuales se puede inicializar la intensidad de cada color bsico para producir un color personalizado. Por ejm. new Color(230, 34, 57) produce un color personaliado que combina el color rojo con 230, el color verde con 34 y el color azul con 57 de intensidad. Ejemplo 05: Disee una aplicacin que utilice intensidades de color RGB para producir el color combinado que representa. Aplique distribucin BorderLayout y GridLayout para el diseo de los objetos de tal manera que se consiga la siguiente interfaz grfica:

Nuevo proyecto de nombre Ejemplo05, nuevo paquete de nombre ejemplo05 y nuevo JFrame Form de nombre Principal donde hacemos el siguiente diseo: Colocamos un panel (jPanel1) con distribucin BorderLayout. Al sur colocamos un botn Combinar y al Este le ponemos una etiqueta En la parte oeste colocamos otro panel (jPanel2) con distribucin GridLayout de 2 columnas, 3 filas. Observe que ste panel se ve como una linea vertical de color naranja. Por eso, en ste nuevo

07/07/2010 -

www.parainformaticos.com

Pgina - 10

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
panel colocamos 3 etiquetas y 3 comboBox de la siguiente manera: En la ventana de navegacin hacemos clic derecho en el jPanel2, Add From Palette, Swing Controls, Label o ComboBox. Ahora, le cambiamos el texto a las etiquetas: En la ventana de propiedades ubique la propiedad Font y aplique negrita con tamao 18. Selecione el ComboBox y utilice la propiedad model para administrar su contenido, dejndolo vaco.

La

razn por la que se dejar vaco es porque lo llenaremos a travs de cdigo java. Haga lo mismo con los dems ComboBox hasta lograr el siguiente diseo:

Ahora, hacemos clic en el botn Source para ir al cdigo fuente y en el constructor del panel (Principal) llenamos los ComboBox con nmeros del 1 al 255 cada uno. Escriba lo que est en negrita: public Principal() { initComponents(); // llenamos los comboBox for (int i=1; i<256; i++) jComboBox1.addItem(String.valueOf(i)); for (int i=1; i<256; i++) jComboBox2.addItem(String.valueOf(i));

07/07/2010 -

www.parainformaticos.com

Pgina - 11

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
for (int i=1; i<256; i++) jComboBox3.addItem(String.valueOf(i)); } Regresamos al diseo haciendo clic en el botn Design:

Seleccionamos la etiqueta para modificar algunas propiedades: Le quitamos el texto y le cambiamos el nombre (clic derecho, change variable name) para ponerle lblColor. Ubicamos la propiedad opaque para marcar el check Recuerde que para aplicar color de fondo a una etiqueta sta debe tener la propiedad opaque marcada, de lo contrario el color de fondo no ser reconocido.

Ahora doble clic en el botn Combinar para programar su accin. Escriba slo lo que est en negrita: private void btnCombinarActionPerformed(java.awt.event.ActionEvent evt) { int r = jComboBox1.getSelectedIndex(); int g = jComboBox2.getSelectedIndex(); int b = jComboBox3.getSelectedIndex(); // establece color de fondo personalizado a la caja de texto lblColor.setBackground(new Color(r,g,b)); } Si le marca error en Color es porque NetBeans an no ha identificado la librera de dicha clase. Ubique el cursor en la palabra Color y presione ctrl + barra espaciadora, luego enter. Si no soluciona el problema, hga clic en Source y elija complete code.

07/07/2010 -

www.parainformaticos.com

Pgina - 12

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

Bien, ahora que no hay errores, ya puede ejecutar su aplicacin presionando F6 Si tiene alguna duda sobre el diseo, le recomendamos revise el manual de uso de NetBeans en el anexo C del libro. Clase Double: Jerarqua de clases y herencia: java.lang.Object java.lang.Number java.lang.Double Double es una clase final por lo que no puede ser heredada. Un objeto de tipo Double contiene un campo cuyo tipo es double primitivo. Adems, sta clase provee varios mtodos para convertir un dato double a String y viceversa. Tambin provee de otros atributos y mtodos de mbito static que son de utilidad en nuestras aplicaciones. A continuacin un resumen del contenido de la clase Double. Resumen de datos static double MAX_VALUE Una constante que tiene al mayor valor real positivo finito posible, (2-2-52)21023. static double MIN_VALUE Una constante que tiene el menor valor real positivo diferente de cero, 2-1074. static double NaN Una constante que tiene un valor real que no es un nmero (NaN).

static double NEGATIVE_INFINITY Una constante que tiene el valor negativo infinito de tipo real. static double POSITIVE_INFINITY Una constante que tiene el valor positivo infinito de tipo real. static int SIZE Constructores Double(double value) Double(String s) Construye un nuevo objeto Double que representa el double primitivo dado como parametro. Construye un nuevo ojbeto Double que representa un valor El nmero de bits utiilzados para representar un valor real.

07/07/2010 -

www.parainformaticos.com

Pgina - 13

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

real primitivo de la cadena dada como parmetro. Resumen de mtodos byte byteValue() Retorna el valor primitivo byte (castea o enmascara el Double a byte). static int compare(double d1, double d2) Compara los dos valores reales dados como parmetros. Retorna 0 si son iguales, 1 si d1 es mayor a d2 y -1 si d1 es menor a d2. int compareTo(Double anotherDouble) Compara numericamente con otro objeto Double. Retorna 0 si son iguales, 1 si ste valor es mayor al valor del objeto parmetro y -1 si es lo contrario. double doubleValue() Retorna el valor primitivo double (castea o enmascara el Double a double) boolean equals(Object obj) Compara ste objeto con el indicado como parmetro. float floatValue() Retorna el valor primitivo float (castea o enmascara el Double a float) int intValue() Retorna el valor primitivo int (castea o enmascara el Double a int). boolean isInfinite() Retorna true si ste valor Double es infinitamente grande en magnitud, false en caso contrario. static boolean isInfinite(double v) Retorna true si el numero dado como parmetro es infinitamente grande en magnitud, false en caso contrario. boolean isNaN() Retorna true si ste valor Double es no numrico (NaN), false en caso contrario.. static boolean isNaN(double v) Retorna true si el nmero dado como parmetro es no numrico (NaN) , false en caso contrario. long longValue() Retorna el valor primitivo long ( castea o enmascara el Double a long).

07/07/2010 -

www.parainformaticos.com

Pgina - 14

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

static double parseDouble(String s) Retorna un nuevo valor primitivo double equivalente a la cadena indicada como parmetro. short shortValue() Retorna el valor primitivo short (castea o enmascara el Double a short). static String toHexString(double d) Retorna una cadena en representacin hexadecimal del valor double dado como parmetro. String toString() Retorna como String el valor real de ste objeto Double. static String toString(double d) Retorna como String el valor double dado como parmetro. static Double valueOf(double d) Retorna una instancia Double equivalente al valor double dado como parmetro. static Double valueOf(String s) Retorna un objeto Double manteniendo el valor double representado por la cadena dada como parmetro. Ejemplos: double x; String s=123.19; x = Double.parseDouble(s); s = Double.toString(45.3); x = Double.MAX_VALUE; x = Double.MIN_VALUE; // 123.19 como real // 45.3 como cadena // valor real mximo positivo // valor real mnimo positivo no cero.

Clase Font : Jerarqua de clases y herencia: java.lang.Object java.awt.Font Por herencia, la clase Font y sus clases descendientes (subclases directas) podrn utilizar los datos y/o mtodos de la clase Object.

07/07/2010 -

www.parainformaticos.com

Pgina - 15

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
La clase Font representa fuentes, las cuales son utilizadas para diversificar la visibilidad de textos. Una fuente proporciona la informacin necesaria para que sean utilizados con diferentes objetos que producen texto, tales como objetos de tipo Graphics, Label, TextField, TextArea, Button, etc. Resumen de Datos static int BOLD Estilo negrita. static int ITALIC Estilo inclinada. static int PLAIN Estilo normal. Constructores Font(String name, int style, int size) Resumen de Mtodos boolean equals(Object obj) Determina si sta fuente es igual a la fuente indicada como parmetro. true, son iguales, false no lo son. String getFontName() Retorna el nombre de sta fuente. String getName() Retorna el nombre lgico de sta fuente. int getSize() Retorna el tamao de sta fuente int getStyle() Retorna el estilo de sta fuente. boolean isBold() Determina si el estilo de la fuente es negrita o n. boolean isItalic() Determina si el estilo de la fuente es inclinada o n. boolean isPlain() Determina si el estilo de la fuente es normal o n. String toString() Retorna como cadena la representacin de sta fuente. Crea una nueva fuente con nombre, estilo y tamao indicados como parmetros.

07/07/2010 -

www.parainformaticos.com

Pgina - 16

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
Ejemplo 06: Disee una aplicacin que utilice diferentes tipo de fuente, estilo y tamao elegidos por el usuario al texto de un textarea.

Nuevo Proyecto de nombre Ejemplo06, nuevo paquete de nombre ejemplo06, nuevo JFrame Formde nombre Principal donde colocamos un panel (jPanel1) con el siguiente diseo: Seleccionamos el frame, ubicamos la propiedad title y escribimos un ttulo. (jPanel1) con distribucin BorderLayout. En el Sur ponemos el botn Aplicar, en el Oeste ponemos otro panel (jPanel2) con distribucin GridLayout de 1 columna, 3 filas donde colocamos 3 comboBox y en el Centro colocamos un rea de Texto. Utilice la propiedad border para colocar un borde con ttulo en cada comboBox. Utilice la propiedad model para administrar el contenido del primer comboBox (cboFuente): Monospaced, Arial, Arial Black, Garamond, Comic sans MS, Times New Roman. Utilice la propiedad model para administra el contenido del segundo comboBox (cboEstilo): Normal, Negrita, Italic, Negrita Italic. Utilice la propiedad model para administrar el contenido del tercer ComboBox (cboTamao) de tal manera que quede vaco. Utilice la propiedad text del rea de Texto para escribir la palabra Hola. Observe la distribucin de los objetos y los nombres de variable utilizados.

07/07/2010 -

www.parainformaticos.com

Pgina - 17

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

Vamos al cdigo fuente (source) para poner el contenido al cboTamao con el siguiente cdigo java que est en negrita: public Principal() { initComponents(); // contenido al cboTamao for (int i=2; i<=120; i+=5) cboTamao.addItem(String.valueOf(i)); } Regresamos al diseo y hacemos doble clic en el botn Aplicar Fuente para programar su accin. Escriba lo que est en negrita y a continuacin desarrolle los mtodos propios utilizados: private void btnAplicarActionPerformed(java.awt.event.ActionEvent evt) { // leer fuente, estilo, tamao String fuente = leeFuente(); int estilo = leeEstilo(); int tamao = leeTamao(); // crear fuente segn atributos leidos Font miFuente = new Font(fuente,estilo,tamao); // aplicar nueva fuente al JTextArea txtSalida.setFont(miFuente); } //-------------String leeFuente() { return cboFuente.getSelectedItem().toString(); }

07/07/2010 -

www.parainformaticos.com

Pgina - 18

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
//-------------int leeEstilo() { int estilo = cboEstilo.getSelectedIndex(); switch(estilo) { case 1: return Font.PLAIN; case 2: return Font.BOLD; case 3: return Font.ITALIC; case 4: return Font.BOLD + Font.ITALIC; default: return 0; } } //------------int leeTamao() { return Integer.parseInt(cboTamao.getSelectedItem().toString()); } Si tiene errores en la palabra Font ponga el cursor al costado, haga clic en Source luego en Complete Code. Esto es para que Netbeans identifique la librera en donde se encuentra dicha clase. Si no hay errores, ya puede ejecutar su aplicacin presionando F6. Clase Graphics: Jerarqua de clases y herencia: java.lang.Object java.awt.Graphics Por herencia, la clase Graphics y sus clases descendientes (subclases directas) podrn utilizar los datos y/o mtodos de la clase Object. La clase Graphics es una clase base abstracta (no se puede instanciar) para todo contexto grfico que permite a una aplicacin dibujar y cargar imgenes. Esta clase permite utilizar mtodos de construccin grfica, generalmente dentro del mtodo paint(); sin embargo, tambin podemos tener nuestro propio mtodo grfico donde hacerlo. La pantalla grfica depende de la configuracin de la pantalla y de la tarjeta de video que tenga el computador. Si consideramos una configuracin estandar de 800 x 600 pixels, las coordenadas de la pantalla grfica la podemos ilustrar as:

Eje X

800

Eje Y
07/07/2010 -

600

www.parainformaticos.com

Pgina - 19

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

Esta ilustracin grfica nos permite ubicar la coordenada correcta para el uso adecuado de los mtodos de construccin grfica. Estos mtodos deben ser utilizados a travs de un objeto grfico declarado con la clase Graphics. Resumen de Mtodos abstract void clearRect(int x, int y, int width, int height) Limpia el rea rectangular definido por los parmetros, rellenandolo con el color de fondo encontrado. abstract void copyArea(int x, int y, int width, int height, int dx, int dy) Copia una rea rectangular definido por los parmetros x,y, width, height, en la nueva coordenada tambin dados como parmetros dx , dy. abstract create() Crea un nuevo objeto grfico que es una copia del objeto grfico actual.

Graphics

Graphics create(int x, int y, int width, int height) Crea un nuevo objeto grfico basado en el actual objeto grfico, pero con una nueva dimensin. void draw3DRect(int x, int y, int width, int height, boolean raised) Dibuja un rectngulo tridimensional. El valor del ltimo parmetro debe ser true para que sea tridimensional por el lado inferior derecho, false para que sea tridimensional por el lado superior izquierdo. abstract void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) Dibuja un arco circular elptico dentro del rectngulo especificado en los parmetros. Debe darse adems el ngulo de inicio y el ngulo del arco requerido. abstract drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer) Dibuja una imagen, previamente cargada, a partir de una coordenada x,y con un color de boolean fondo. El ltimo parmetro debe ser la palabra reservada this. abstract drawImage(Image img, int x, int y, ImageObserver observer) Dibuja una imagen, previamente cargada, a partir de una coordenada x, y. El ltimo boolean parmetro debe ser la palabra reservada this. abstract drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer) boolean Dibuja una imagen, previamente cargada, dentro de los lmites del rectngulo y con un color de fondo. El ltimo parmetro debe ser la palabra reservada this. abstract drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) Dibuja una imagen, previamente cargada, dentro de los lmites del rectngulo. El ltimo boolean parmetro debe ser la palabra reservada this. abstract void drawLine(int x1, int y1, int x2, int y2) Dibuja una linea, desde las coordenadas del punto de partida (x1, y1) hasta las

07/07/2010 -

www.parainformaticos.com

Pgina - 20

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

coordenadas del punto de llegada (x2, y2). abstract void drawOval(int x, int y, int width, int height) Dibuja el contorno de un ovalo inscrito en un rectngulo cuyas coordenadas se dan como parmetros. abstract void drawPolygon(int[] xPoints, int[] yPoints, int nPoints) Dibuja un polgono cerrado de acuerdo a las coordenadas x,y indicados en sus respectivos arreglos. El ltimo parmetro indica el nmero de puntos del polgono. abstract void drawPolyline(int[] xPoints, int[] yPoints, int nPoints) Dibuja una secuencia continuada de lineas cuyas coordenadas se indican en sus respectivos arreglos. El ltimo parmetro indica el nmero de puntos indicados. void drawRect(int x, int y, int width, int height) Dibuja el contorno de un rectngulo cuyas coordenadas de la esquina superior izquierda, el ancho y el alto se dn como parmetros. abstract void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) Dibuja el contorno ovalado en las esquinas de un rectngulo dndole adems de las coordenadas para un rectngulo, el ancho y el alto de la curva de las esquinas. abstract void drawString(String str, int x, int y) Dibuja el texto dado a partir de la coordenada x,y tambin dados como parmetros. void fill3DRect(int x, int y, int width, int height, boolean raised) Dibuja un rectngulo tridimensional relleno. abstract void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) Dibuja un arco circular o elptico relleno. abstract void fillOval(int x, int y, int width, int height) Dibuja un valo relleno. abstract void fillPolygon(int[] xPoints, int[] yPoints, int nPoints) Dibuja un polgono cerrado relleno. abstract void fillRect(int x, int y, int width, int height) Dibuja un rectngulo relleno. abstract void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) Dibuja un rectngulo relleno con las esquinas en curva. abstract Color getColor() Obtiene el color actual. abstract Font getFont() Obtiene la fuente actual.

07/07/2010 -

www.parainformaticos.com

Pgina - 21

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

FontMetrics getFontMetrics() Obtiene las caractersticas de la fuente actual. abstract void setColor(Color c) Establece un color especfico. abstract void setFont(Font font) Establece una fuente especfica. String toString() Retorna como cadena el valor del objeto grfico. abstract void translate(int x, int y) Traslada el origen del contexto grfico hacia las coordenadas del punto (x, y). Ejemplo 07: Disee una aplicacin donde se pueda mostrar todos los grficos posibles con draw y con fill para notar su diferencia.

Nuevo Proyecto de nombre Ejemplo07, nuevo paquete de nombre ejemplo07, nuevo JFrame Formde nombre Principal. Seleccionamos el frame y le ponemos ttulo en su propiedad title. Luego hacemos el siguiente diseo:

07/07/2010 -

www.parainformaticos.com

Pgina - 22

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
Clic derecho en el frame para aplicar distribucin BorderLayout. En el norte colocamos un botn para mostrar los grficos, en el centro colocamos un panel (panGraficos) donde se harn los grficos y en el sur colocamos otro botn para limpiar el panel. Observe la distribucin de los objetos y los nombres de variable utilizados. Hacemos doble clic en el botn Mostrar Grficos para programar su accin: private void btnMostrarActionPerformed(java.awt.event.ActionEvent evt) { Graphics g = panGraficos.getGraphics(); // rectangulo 3D color gris g.setColor(Color.gray); g.draw3DRect(10, 10, 70, 70, true); // rectangulo relleno 3D color gris g.setColor(Color.lightGray); g.fill3DRect(90, 10, 70, 70, true); // rectangulo simple color gris g.setColor(Color.gray); g.drawRect(170, 10, 70, 70); // arco de 90 grados color rojo, // en el cuadrante derecho de un rectangulo g.setColor(Color.red); g.drawArc(10, 90, 70, 70, 0,90); // arco de 90 grados color rojo relleno, // en el cuadrante derecho de un rectangulo g.setColor(Color.red); g.fillArc(90,90,70,70,0,90); // ovalo simple color rojo, g.setColor(Color.red); g.drawOval(170, 90, 70, 70); // rectangulo con esquinas redondeadas color azul g.setColor(Color.blue); g.drawRoundRect(10,170,70,70, 40, 40); // rectangulo relleno con esquinas redondeadas color azul g.setColor(Color.blue); g.fillRoundRect(90,170,70,70, 40, 40); // rectangulo simple, relleno color gris g.setColor(Color.gray); g.fillRect(170, 170, 70, 70);

07/07/2010 -

www.parainformaticos.com

Pgina - 23

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
// define coordenadas de un poligono de 3 vertices int puntosX1[] ={10,40,80}; int puntosY1[] ={250,300,250}; int puntos1 = 3; // poligono cerrado de 3 puntos (triangulo) color naranja g.setColor(Color.orange); g.drawPolygon(puntosX1, puntosY1, puntos1); // define coordenadas de otro poligono de 3 vertices int puntosX2[] ={90,120,160}; int puntosY2[] ={250,300,250}; int puntos2 = 3; // poligono cerrado relleno de 3 puntos(triangulo) // color celeste g.setColor(Color.orange); g.fillPolygon(puntosX2, puntosY2, puntos2); // ovalo simple relleno, color rojo, g.setColor(Color.red); g.fillOval(170, 250, 70, 70); // texto de tres primeros graficos horizontales, color gris g.setColor(Color.gray); g.setFont(new Font("TimesRoman",Font.ITALIC,14)); g.drawString("draw3DRect(10, 10, 70, 70, true)",270,20); g.drawString("fill3DRect(90, 10, 70, 70, true)",270,40); g.drawString("drawRect(170, 10, 70, 70)",270,60); // texto de tres siguientes graficos horizontales, color azul g.setColor(Color.blue); g.drawString("drawArc(10, 90, 70, 70, 0,90)",270,110); g.drawString("fillArc(90,90,70,70,0,90)",270,130); g.drawString("drawOval(170, 90, 70, 70)",270,150); // texto de tres siguientes graficos horizontales, color rojo g.setColor(Color.red); g.drawString("drawRoundRect(10,170,70,70, 40, 40)",270,180); g.drawString("fillRoundRect(90,170,70,70, 40, 40)",270,200); g.drawString("fillRect(170, 170, 70, 70)",270,220); // texto de tres ultimos graficos horizontales, color negro g.setColor(Color.black); g.drawString("drawPolygon(puntosX1, puntosY1, puntos1)",270,260); g.drawString("fillPolygon(puntosX2, puntosY2, puntos2)",270,280); g.drawString("fillOval(170, 250, 70, 70)",270,300); } Regresamos al diseo y hacemos doble clic en el botn que Limpiar para programar su accin: private void btnLimpiarActionPerformed(java.awt.event.ActionEvent evt) {

07/07/2010 -

www.parainformaticos.com

Pgina - 24

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
panGraficos.updateUI(); } Para obtener el contexto grfico del panel, hacemos la siguiente lnea: Graphics g = panGraficos.getGraphics(); Para refrescar el contexto grfico del panel, hacemos la siguiente lnea: panGraficos.updateUI();

Ya puede ejecutar su aplicacin presionando F6.

Clase Integer: Jerarqua de clases y herencia: java.lang.Object java.lang.Number java.lang.Integer Integer es una clase final por lo que no puede ser heredada. La clase Integer envuelve un valor primitivo de tipo int en un objeto. Un objeto de tipo Integer contiene un dato de tipo int. Adems, esta clase provee varios mtodos para convertir un int a String y viceversa, asi como otras constantes y otros mtodos tiles para manejar un int. Resumen de Datos static int MAX_VALUE Una constante que tiene el mximo valor int puede ser, 231-1. static int MIN_VALUE Una constante que tiene el mnimo valor int puede ser, -231. static int SIZE El nmero de bits usados para representar un valor int en forma binara con complemento a dos.

Constructores Integer(int value) Construye un nuevo objeto Integer que representa el valor especificado como parmetro.

07/07/2010 -

www.parainformaticos.com

Pgina - 25

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

Integer(String s) Resumen de mtodos

Construye un nuevo objeto Integer que representa el valor entero del parmetro dado como String.

byte byteValue() Retorna el valor de ste Integer como byte. int compareTo(Integer anotherInteger) Compara dos objetos Integer numricamente. static Integer decode(String nm) Decodifica un String y lo retorna como Integer. double doubleValue() Retorna el valor de ste Integer como double. boolean equals(Object obj) Compara este ojbeto con el dado como parmetro. Si son iguales retorna true, de lo contario retorna false. float floatValue() Retorna el valor de ste Integer como float. static Integer getInteger(String nm) Retorna como Integer el valor numrico dado como cadena. static Integer getInteger(String nm, int val) Retorna como Integer el valor numrico dado como cadena y segn el sistema de numeracin indicado como parmetro. int intValue() Retorna el valor de ste Integer como int. long longValue() Retorna el valor de ste Integer como long. static int parseInt(String s) Pasa la cadena dada como parmetro a un nmero entero en base 10. static int reverse(int i) Retorna el valor que se obtiene al invertir el orden de de los bits correspondientes al valor dado como parmetro. static int reverseBytes(int i)

07/07/2010 -

www.parainformaticos.com

Pgina - 26

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

Retorna el valor que se obtiene al invertir el orden de los bytes correspondientes al valor dado como parmetro. short shortValue() Retorna el valor de ste Integer como short. static int signum(int i) Retorna el signo del valor dado como parmetro. static String toBinaryString(int i) Retorna una cadena que representa el valor binario (base 2) del parmetro dado. static String toHexString(int i) Retorna una cadena que representa el valor hexadecimal (base 16) del parmetro dado. static String toOctalString(int i) Retorna una cadena que representa el valor octal (base 8) del parmetro dado. String toString() Retorna una cadena que representa ste valor entero. static String toString(int i) Retorna una cadena que representa el valor dado como parmetro. static Integer valueOf(int i) Retorna como Integer el valor dado como parmetro. static Integer valueOf(String s) Retorna como Integer el valor dado como parmetro. Ejemplos: int x; String s=123; x = Integer.parseInt(s); s = Integer.toString(45); x = Integer.MAX_VALUE; x = Integer.MIN_VALUE; Clase Math: Jerarqua de clases y herencia: java.lang.Object // 123 como entero // 45 como cadena // valor entero mximo positivo // valor entero mnimo negativo.

07/07/2010 -

www.parainformaticos.com

Pgina - 27

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
java.lang.Math La clase Math contiene metodos de clculo numrico bsico como exponencial, logaritmo, raz cuadrada y funciones trigonomtricas. La Clase Math, a diferencia de otras clases, es una clase final, lo que significa que no puede ser instanciada por ningn objeto y sus datos y mtodos tienen mbito static lo que significa que para utilizarlos slo se tiene que precederlos por la clase, por ejm. Math.PI, Math.pow(x,y), etc. Resumen de Datos static double E static double PI Resumen de Mtodos static double abs(double a) Retorna el valor absoluto de un valor double dado como parmetro. static float abs(float a) Retorna el valor absoluto de un valor float dado como parmetro. static int abs(int a) Retorna el valor absoluto de un valor entero dado como parmetro. static long abs(long a) Retorna el valor absoluto de un valor long dado como parmetro. static double acos(double a) Retorna el arcocoseno de un ngulo dado en radianes. static double asin(double a) Retorna el arcoseno de un ngulo dado en radianes. static double atan(double a) Retorna el arcotangente de un ngulo dado en radianes. static double ceil(double a) Retorna el valor double ms corto no menor que el parmetro dado. static double cos(double a) Retorna el coseno de un ngulo dado en radianes. static double exp(double a) Retorna el valor exponencial de Euler del parmetro dado. retorna el valor de e, la base de un logaritmo natural. retorna el valor de pi.

07/07/2010 -

www.parainformaticos.com

Pgina - 28

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

static double floor(double a) Retorna el valor double ms grande no mayor que el parmetro dado. static double log(double a) Retorna el logaritmo natural (base e) de un valor dado. static double max(double a, double b) Retorna el mayor de dos valores double dados como parmetros. static float max(float a, float b) Retorna el mayor de dos valores float dados como parmetros. static int max(int a, int b) Retorna el mayor de dos valores int dados como parmetros. static long max(long a, long b) Retorna el mayor de dos valores long dados como parmetros. static double min(double a, double b) Retorna el menor de dos valores double dados como parmetros. static float min(float a, float b) Retorna el menor de dos valores float dados como parmetros. static int min(int a, int b) Retorna el menor de dos valores int dados como parmetros. static long min(long a, long b) Retorna el menor de dos valores long dados como parmetros. static double pow(double a, double b) Retorna el valor de la potencia de a elevado al exponente b. static double random() Retorna un valor double aleatorio mayor o igual a 0.0 y menor a 1.0. static long round(double a) Retorna el valor redondeado del parmetro dado, como long. static int round(float a) Retorna el valor redondeado del parmetro dado, como int. static double sin(double a) Retorna el seno de un ngulo dado en radianes. static double sqrt(double a) Retorna la raz cuadrada del parmetro dado.

07/07/2010 -

www.parainformaticos.com

Pgina - 29

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

static double tan(double a) Retorna la tangente de un ngulo dado en radianes. static double toDegrees(double angrad) Convierte un ngulo expresado en radianes a sexagecimales. static double toRadians(double angdeg) Convierte un ngulo expresado en sexagecimales a radianes. Clase String: Jerarqua de clases y herencia: java.lang.Object java.lang.String La clase String representa una cadena de caracteres. Todos los literales de cadena tales como "abc", son implementados como instancias de la sta clase. Ejemplo, la siguiente declaracin de variable: String str = "abc"; Es equivalente a las siguientes declaraciones: char data[] = {'a', 'b', 'c'};// arreglo de caracteres String str = new String(data);// objeto con valor inicial abc La clase String incluye mtodos que permiten examinar los caracteres individuales de una cadena para compararlos, para ubicarlos, para extraerlos como subcadenas, y para crear copias de una cadena conviertiendo todos sus caracters a maysculas o a minsculas. El lenguaje Java prove soporte especial para la concatenacin (unin) de cadenas con el operador ( + ), y para convertir otros objetos a cadenas. La concatenacin de cadenas es implementada a travs de la clase StringBuffer y su mtodo append(). Las conversiones son implementadas a travs del mtodo toString() definido en la clase Object la cual es heredada por todas las clases en Java. Constructores String() String(byte[] bytes) String(char[] value) String(String original) Crea un nuevo objeto String vaco, sin caracteres. Crea un nuevo objeto String inicializado con los caracteres equivalents a cada nmero guardado en el arreglo de bytes. Crea un nuevo objeto String inicializado con los caracteres contenidos en el arreglo dado como parmetro. Crea un nuevo objeto String inicializado con el valor dado como

07/07/2010 -

www.parainformaticos.com

Pgina - 30

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

parmetro. Resumen de Mtodos char charAt(int index) Retorna el character correspondiente al indice dado como parmetro. int compareTo(String anotherString) Retorna como entero el resultado de la comparacin de la cadena con otra cadena. Si ste entero es 0 significa que ambas cadenas son iguales. La comparacin se realiza exactamente carcter con carcter diferenciando maysculas de minsculas. int compareToIgnoreCase(String str) Retorna como entero el resultado de la comparacin de la cadena con otra cadena. Si ste entero es 0 significa que ambas cadenas son iguales. La comparacin se realiza exactamente carcter con carcter pero ignorando la diferencia entre maysculas y minsculas. String concat(String str) Retorna el resultado de la concatenacin de la cadena con otra dada como parmetro. boolean endsWith(String suffix) Retorna true si sta cadena termina con la cadena dada como parmetro, de lo contrario retorna false. boolean equals(Object anObject) Retorna true si sta cadena es igual al objeto dado como parmetro. boolean equalsIgnoreCase(String anotherString) Retorna true si sta cadena es igual a la cadena dada como parmetro ignorando la diferencia entre maysculas y minsculas. byte[] getBytes() Retorna un arreglo de nmeros conteniendo los respectivos cdigos nuricos de los caracteres de sta cadena. int indexOf(int ch) Retorna la posicin de la primera ocurrencia del caractr dado como parmetro dentro de sta cadena. int indexOf(int ch, int fromIndex) Retorna la posicin de la primera ocurrencia del caractr dado como parmetro y que se encuentre en sta cadena pero a partir de la posicin dada como parmetro. int indexOf(String str) Retorna la posicin de la primera ocurrencia encontrada de la cadena dada como parmetro. int indexOf(String str, int fromIndex) Retorna la posicin de la primera ocuerrencia encontrada de la cadena dada com

07/07/2010 -

www.parainformaticos.com

Pgina - 31

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

parmetro pero empezando su bsqueda en la posicin dada como parmetro. int lastIndexOf(int ch) Retorna la posicin de la ltima ocurrencia del character dado como parmetro. int lastIndexOf(int ch, int fromIndex) Retorna la posicin de la ltima ocurrencia del character dado como parmetro, buscando en retroceso a partir de la posicin indicada. int lastIndexOf(String str) Retorna la posicin de la ltima ocurrencia de la cadena dada como parmetro. int lastIndexOf(String str, int fromIndex) Retorna la posicin de la ltima ocurrencia de la cadena dada como parmetro., buscando en retroceso a partir de la posicin dada como parmetro. int length() Retorna el nmero de caractres que contiene la cadena. String replace(char oldChar, char newChar) Retorna una nueva cadena como resultado de reemplazar todas las ocurrencias del caractr oldChar por el caractr newChar dados como parmetros. String replaceAll(String regex, String replacement) Retorna una nueva cadena como resultado de reemplazar todas las ocurrencias de la subcadena regex por la subcadena replacement dados como parmetros. String replaceFirst(String regex, String replacement) Retorna una nueva cadena como resultado de reemplazar solo la primera ocurrencia de la subcadena regex por la subcadena replacement dados como parmetros. boolean startsWith(String prefix) Retorna true si la cadena empieza con la subcadena prefix dada com parmetro. boolean startsWith(String prefix, int toffset) Retorna true si la cadena empieza con la subcadena prefix dada com parmetro, empezando la bsqueda en la posicin toffset dado como parmetro. String substring(int beginIndex) Retorna una subcadena cuyo primer character empieza en la posicin beginIndex dado como parmetro. String substring(int beginIndex, int endIndex) Retorna una subcadena copiada cuyo primer caractr empieza en la posicin beginIndex y cuya cantidad de caracteres a copiar es indicado por endIndex dados como parmetros. char[] toCharArray() Retorna en un arreglo de caractres el contenido de la cadena.

07/07/2010 -

www.parainformaticos.com

Pgina - 32

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

String toLowerCase() Retorna una nueva cadena como resultado de convertir todos los caractres a minsculas. String toUpperCase() Retorna una nueva cadena como resultado de convertir todos los caractres a maysculas. String trim() Retorna una nueva cadena como resultado de omitir los espacios en blanco al inicio y al final de la cadena. static String valueOf(boolean b) Retorna una nueva cadena como resultado de convertir su parmetro a cadena. static String valueOf(char c) Retorna una nueva cadena como resultado de convertir su parmetro a cadena. static String valueOf(char[] data) Retorna una nueva cadena como resultado de convertir su parmetro a cadena. static String valueOf(double d) Retorna una nueva cadena como resultado de convertir su parmetro a cadena.. static String valueOf(float f) Retorna una nueva cadena como resultado de convertir su parmetro a cadena. static String valueOf(int i) Retorna una nueva cadena como resultado de convertir su parmetro a cadena. static String valueOf(long l) Retorna una nueva cadena como resultado de convertir su parmetro a cadena. static String valueOf(Object obj) Retorna una nueva cadena como resultado de convertir su parmetro a cadena. Ejemplo 08: Disee una aplicacin que permita manipular los caracteres de una cadena a travs de sus mtodos disponibles de acuerdo a la siguiente interfz grfica.

07/07/2010 -

www.parainformaticos.com

Pgina - 33

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

Nuevo proyecto de nombre Ejemplo08, nuevo paquete de nombre ejemplo08, nuevo JFrame Form de nombre Principal donde hacemos el siguiente diseo: Aplicamos GridLayout para el JFrame principal con 2 columnas, 1 fila. En la primera columna ponemos un Panel (jPanel1) con distribucin BorderLayout: En el norte ponemos la caja de texto con borde, en el centro un rea de Texto y en el sur una etiqueta. En la segunda columna ponemos otro Panel (jPanel2) con distribucin GridLayout con 2 columnas, 7 filas para los botones. Finalmente, cambiamos el texto y el nombre de variable para los objetos. Observe la distribucin de los objetos y los nombres de variable utilizados.

Ahora vamos a ver la programacin de cada botn. Doble clic en cada botn para programar su accin. private void btnLongitudActionPerformed(java.awt.event.ActionEvent evt) { // lee el mensaje

07/07/2010 -

www.parainformaticos.com

Pgina - 34

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
String cadena=txtMensaje.getText(); // obtiene la longitud int longi = cadena.length(); // imprime longitud txtSalida.setText("El texto ingresado tiene: "+longi+" caracteres."); } private void btnSeparaPalabrasActionPerformed(java.awt.event.ActionEvent evt) { // lee el mensaje String cadena=txtMensaje.getText(); // obtiene la longitud int longi = cadena.length(); // limpia area txtSalida.setText(""); // inicializa contador de palabras int contpala=0; // separa palabras por el espacio en blanco do { // no considera espacios al inicio ni al final cadena=cadena.trim(); // ubica posicion del primer caracter blanco int pos=cadena.indexOf(' '); // obtiene palabra encontrada String palabra=""; if (pos>0) palabra=cadena.substring(0,pos+1); else palabra=cadena; // imprime palabra encontrada txtSalida.append(palabra+"\n"); // ignora palabra encontrada cadena=cadena.substring(palabra.length()); // actualiza contador de palabras contpala++; } while(cadena.length()>0); // imprime contador de palabras txtSalida.append("\n"+contpala+" palabras encontradas."); } private void btnMayusculasActionPerformed(java.awt.event.ActionEvent evt) {

07/07/2010 -

www.parainformaticos.com

Pgina - 35

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
// lee el mensaje String cadena=txtMensaje.getText(); // lo convierte a maysculas cadena = cadena.toUpperCase(); // imprime nueva cadena en mayusculas txtSalida.setText("Texto convertido a maysculas:\n"+cadena); } private void btnMinusculasActionPerformed(java.awt.event.ActionEvent evt) { // lee el mensaje String cadena=txtMensaje.getText(); // lo convierte a minsculas cadena = cadena.toLowerCase(); // imprime nueva cadena en minusculas txtSalida.setText("Texto convertido a minsculas:\n"+cadena); } private void btnCaracteresActionPerformed(java.awt.event.ActionEvent evt) { // lee el mensaje String cadena=txtMensaje.getText(); // obtiene la longitud int longi = cadena.length(); // declara un arreglo de caracteres segn longitud char[] arreglo = new char[longi]; // convierte cadena a arreglo de caracteres arreglo = cadena.toCharArray(); // muestra contenido del arreglo txtSalida.setText("Contenido del arreglo de caracteres:\n"); txtSalida.append("\tPosicion\tCaracter\n"); for (int p=0; p < longi; p++) txtSalida.append("\t"+p+"\t\t"+arreglo[p]+"\n"); } private void btnAsciiActionPerformed(java.awt.event.ActionEvent evt) { // lee el mensaje String cadena=txtMensaje.getText(); // obtiene la longitud int longi = cadena.length(); // declara un arreglo de bytes para los codigos ascii byte[] arreglo = new byte[longi]; // convierte cadena a arreglo de bytes arreglo = cadena.getBytes();

07/07/2010 -

www.parainformaticos.com

Pgina - 36

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

// muestra contenido del arreglo txtSalida.setText("Posicion\tCaracter\t\tAscii\n"); for (int p=0; p < longi; p++) txtSalida.append("\t"+p+"\t"+(char)(arreglo[p])+ "\t\t"+arreglo[p]+"\n"); } private evt) { void btnSinPrimeraPalabraActionPerformed(java.awt.event.ActionEvent

// lee mensaje String cadena=txtMensaje.getText(); // elimina los espacios laterales cadena=cadena.trim(); // encuentra la primera posicin de un espacio en blanco int p=cadena.indexOf(' '); if(p>0) // descarta la primera palabra cadena=cadena.substring(p+1).trim(); else cadena=""; // resultado txtSalida.setText("Sin la primera palabra:\n"+cadena); } private void btnSinUltimaPalabraActionPerformed(java.awt.event.ActionEvent evt) { String palabra; int p; // lee mensaje String cadena=txtMensaje.getText(); // elimina espacios laterales cadena=cadena.trim(); // se queda con la ultima palabra do{ p=cadena.indexOf(' '); if(p>0) cadena=cadena.substring(p+1).trim(); }while(p>0); palabra=cadena.trim(); // vuelve a leer el mensaje original cadena=txtMensaje.getText(); // encuentra posicion de la ultima palabra p=cadena.indexOf(palabra); if (p>0) cadena=cadena.substring(0, p-1).trim();

07/07/2010 -

www.parainformaticos.com

Pgina - 37

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
else cadena=""; // resultado txtSalida.setText("Sin la ultima palabra:\n"+cadena); } private void btnPorLaIzquierdaActionPerformed(java.awt.event.ActionEvent evt) { // lee el mensaje String cadena=txtMensaje.getText(); // obtiene la longitud int longi = cadena.length(); // aparece de izquierda a derecha txtSalida.setText(""); for (int p=0; p < longi; p++) { txtSalida.append(lblLluvia.getText()+cadena.charAt(p)+"\n"); lblLluvia.setText(lblLluvia.getText()+cadena.charAt(p)); } } private void btnPorLaDerechaActionPerformed(java.awt.event.ActionEvent evt) { // lee el mensaje String cadena=txtMensaje.getText(); // obtiene la longitud int longi = cadena.length(); // aparece de izquierda a derecha txtSalida.setText(""); for (int p=1; p <= longi; p++) { String cad=cadena.substring(longi-p); txtSalida.append(cad+"\n"); } } private void btnInvierteActionPerformed(java.awt.event.ActionEvent evt) { // lee el mensaje String cadena=txtMensaje.getText(); // obtiene la longitud int longi = cadena.length(); // invierte mensaje leido String invertido=""; for (int p=longi-1; p >=0; p--) invertido += cadena.charAt(p);

07/07/2010 -

www.parainformaticos.com

Pgina - 38

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
// imprime cadena invertida txtSalida.setText("Texto invertido:\n"+invertido); } private void btnSinEspLateralesActionPerformed(java.awt.event.ActionEvent evt) { // lee el mensaje String cadena=txtMensaje.getText(); // obtiene la longitud int longi = cadena.length(); // imprime longitud antes de quitar los espacios txtSalida.setText("Antes de quitar los espacios: "+longi+" caracteres.\n"); // quita los espacios en blanco cadena = cadena.trim(); longi = cadena.length(); // imprime longitud despues de quitar los espacios txtSalida.append("Despues de quitar los espacios: caracteres."); // actualiza cadena ingresada txtMensaje.setText(cadena); } private void btnEstadisticaActionPerformed(java.awt.event.ActionEvent evt) { // lee el mensaje String cadena=txtMensaje.getText(); // obtiene la longitud int longi = cadena.length(); // inicializa contadores int vocala = 0, vocale = 0, vocali = 0, vocalo= 0, vocalu=0; // actualiza contadores for (int p=0; p<longi; p++) switch(cadena.charAt(p)){ case 'a':case 'A': vocala++; case 'e':case 'E': vocale++; case 'i':case 'I': vocali++; case 'o':case 'O': vocalo++; case 'u':case 'U': vocalu++; } // imprime reporte txtSalida.setText("vocal\tcontador\n"); txtSalida.append("a,A:\t"+vocala+"\n"); txtSalida.append("e,E:\t"+vocale+"\n"); txtSalida.append("i,I:\t"+vocali+"\n"); txtSalida.append("o,O:\t"+vocalo+"\n"); "+longi+"

break; break; break; break; break;

07/07/2010 -

www.parainformaticos.com

Pgina - 39

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
txtSalida.append("u,U:\t"+vocalu+"\n"); } Ya puede ejecutar su aplicacin presionando F6 Clase Vector: Jerarqua de clases y herencia: java.lang.Object java.util.AbstractCollection java.util.AbstractList java.util.Vector Por herencia, la clase Vector y sus clases descendientes (subclases directas) pueden utiilzar los datos y/o mtodos de las superclases AbstractList, AbstractCollection y Object. La clase Vector implementa un extenso arreglo de objetos. Como un arreglo, contiene componentes que pueden ser accesados a travs de un ndice entero. Sin embargo, el tamao del Vector puede crecer o decrecer como se necesite agregando y/o removiendo tems despus que el Vector fue creado. Cada vector trata de optimizar la administracin de memoria manteniendo una capacidad de incremento. Esta capacidad es siempre por lo menos tan grande como el tamao del vector; es generalmente grande debido a que sus componentes son agregados al vector. Una aplicacin puede incrementar la capacidad de un vector antes de insertar un gran nmero de componentes. Por defecto la capacidad de un vector es para 10 elementos y su tamao es 0 cuando an no se ha insertado elemento alguno. Cuando el tamao alcanca a la capacidad por defecto, sta se incrementa automticamente en otro tanto y as sucesivamente mantiene esa capacidad de incremento a medida que el tamao tambin vaya aumentando. Constructores Vector() Vector(Collection c) Vector(int initialCapacity) Vector(int initialCapacity, int capacityIncrement) Crea un vector vaco cuyo arreglo interno de almacenamiento tiene tamao 10 y su capacidad estandar de incremento es 0. Crea un vector conteniendo los elementos de la coleccin indicada como parmetro. Crea un vector vaco con la capacidad de componentes indicado como parmetro y con capacidad de incremento 0. Crea un vector vaco con la capacidad de componentes indicado como parmetro y con capacidad de incremento tambin indicado como parmetro.

07/07/2010 -

www.parainformaticos.com

Pgina - 40

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

Resumen de Mtodos void add(int index, Object element) Inserta el elemento dado como parmetro en la posicin index tambin dada como parmetro. boolean add(Object o) Agrega el elemento dado como parmetro al final del vector. boolean addAll(Collection c) Agrega todos los elementos de la coleccin dada como parmetro al final del vector. boolean addAll(int index, Collection c) Inserta todos los elementos de la coleccin dada como parmetro a partir de la posicin index tambin dada como parmetro. void addElement(Object obj) Agrega el elemento dado como parmetro al final del vector incrementando su tamaao en uno. int capacity() Retorna la capacidad actual del vector. void clear() Remueve todos los elementos del vector. Object clone() Retorna un clon del vector. boolean contains(Object elem) Retorna true si el elemento dado como parmetro se encuentra en el vector; de lo contrario retorna false. boolean containsAll(Collection c) Retorna true si el vector contiene a todos los elementos de la coleccin dada como parmetro; de lo contrario retorna false. void copyInto(Object[] anArray) Copia loe elementos de ste vector en el arreglo indicado como parmetro. Object elementAt(int index) Retorna el elemento que ocupa la posicin index dado como parmetro. boolean equals(Object o) Retorna true si la comparacin del objeto dado como parmetro es igual a ste vector; de lo contrario retorna false. Object firstElement() Retorna el primer elemento del vector. Aquel que ocupa la posicin 0.

07/07/2010 -

www.parainformaticos.com

Pgina - 41

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

Object get(int index) Retorna el elemento que ocupa la posicin index dado como parmetro. int indexOf(Object elem) Retorna la posicin de la primera ocurrencia del elemento dado como parmetro en el arreglo. De no encontrarse, retorna -1. int indexOf(Object elem, int index) Retorna la posicin de la primera ocurrencia del elemento dado como parmetro pero buscado a partir de la posicin index dado como parmetro. void insertElementAt(Object obj, int index) Inserta el objeto dado como paremtro a partir de la posicin index tambin dado como parmetro. boolean isEmpty() Retorna true si el vector est vaco, no tiene elementos; de lo contrario retorna false. Object lastElement() Retorna el ltimo elemento del vector. int lastIndexOf(Object elem) Retorna la posicin de la ltima ocurrencia del elemento dado como parmetro. int lastIndexOf(Object elem, int index) Retorna la posicin de la ltima ocurrencia del elemento dado como parmetro pero buscado en retroceso a partir de la posicin index dado como parmetro. Object remove(int index) Remueve el elemento de la posicin index dado como parmetro. boolean remove(Object o) Remueve la primera ocurrencia del elemento dado como parmetro, retornando true si el elemento fue removido o false si el elemento no fue encontrado y por tanto, no removido. boolean removeAll(Collection c) Remueve del vector todos los elementos indicados en la coleccin dada como parmetro. void removeAllElements() Remueve todos los elementos del vector volviendo a su tamao en 0. boolean removeElement(Object obj) Remueve la primera ocurrencia del objeto dado como parmetro, retornando true si fue removido y false si no lo fue. void removeElementAt(int index) Remueve el elemento de la posicin index dado como parmetro.

07/07/2010 -

www.parainformaticos.com

Pgina - 42

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

boolean retainAll(Collection c) Retiene solamente los elementos contenidos en la coleccin dada como parmetro retornando true si fue exitosa la operacin y false si no lo fue.. Object set(int index, Object element) Reemplaza el elemento de la posicin index por el elemento dado como parmetro. void setElementAt(Object obj, int index) Reemplaza el elemento de la posicin index por el elemento dado como parmetro. void setSize(int newSize) Establece el tamao del vector. int size() Retorna el nmero de elementos del vector. List subList(int fromIndex, int toIndex) Retorna un lista de elementos comprendidos entre la posicin fromIndex y toIndex dados como parmetros. Incluy fromIndex pero n incluye a toIndex. Object[] toArray() Retorna un arreglo conteniendo todos los elementos del vector. String toString() Retorna una cadena representando al vector y conteniendo la cadena representativa de cada elemento. void trimToSize() Actualiza la capadidad del vector con su tamao actual. Ejemplo 09: Disee una aplicacin que utilice un vector que contenga nombres de amigos, y a travs de botones se puedan realizar diferentes procesos como se indica en la siguiente interfz grfica:

07/07/2010 -

www.parainformaticos.com

Pgina - 43

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

Nuevo proyecto de nombre Ejemplo09, nuevo paquete de nombre ejemplo09, nuevo JFrame Form.de nombre Principal donde hacemos el siguiente diseo. Clic en el frame y en la propiedad title le ponemos un ttulo. Sobre el frame colocamos un panel (panPrincipal) con distribucin BorderLayout: En el norte colocamos la caja de txto con un texto en su borde, en el centro colocamos otro panel (panCentral) con distribucin GridLayout de 2 columnas, 1 fila. En la primera columna colocamos un scrollpane con un rea de texto y en la segunda columna colocamos un tercer panel (panBotones) con distribucin GridLayout de 1 columna, 8 filas donde colocamos los botones. Por ltimo, colocamos una etiqueta en el sur del panel principal para el nmero de elementos. Observe la distribucin de los objetos y los nombres de variable utilizados.

07/07/2010 -

www.parainformaticos.com

Pgina - 44

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

Vamos al cdigo fuente (source) para declarar un objeto de la clase Vector: Clic en source y escribimos lo que est en negrita: public class Principal extends javax.swing.JFrame { Vector amigos = new Vector(); public Principal() { initComponents(); } Ahora vamos a programar todos los botones. Se recomienda hacerlo uno por uno con doble clic: private void btnAgregaAlFinalActionPerformed(java.awt.event.ActionEvent evt) { alFinal(); } private void btnAgregaAlInicioActionPerformed(java.awt.event.ActionEvent evt) { alInicio(); } private void btnQuitarActionPerformed(java.awt.event.ActionEvent evt) { quitaUno(); } private void btnQuitarTodoActionPerformed(java.awt.event.ActionEvent evt) { quitaTodos(); } private void btnObtieneElPrimeroActionPerformed(java.awt.event.ActionEvent evt) { elPrimero();

07/07/2010 -

www.parainformaticos.com

Pgina - 45

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
} private void btnObtieneElUltimoActionPerformed(java.awt.event.ActionEvent evt) { elUltimo(); } private void btnEmpiezaConActionPerformed(java.awt.event.ActionEvent evt) { empiezaCon(); } private void btnCapacidadTamaoActionPerformed(java.awt.event.ActionEvent evt) { capacidad(); } //--------------void alFinal() { // leer nombre String nombre = txtNombre.getText(); if (nombre.length()==0) lblInformacion.setText("Ingrese un Nombre"); else { lblInformacion.setText(""); // agregar al final amigos.addElement(nombre); // muestra contenido del vector muestraVector(); } } //---------------void muestraVector(){ // limpia area txtSalida.setText("contenido del vector:\n"); // obtiene tamao int n=amigos.size(); // muestra cada elemento for (int i=0; i < n; i++) txtSalida.append(amigos.elementAt(i).toString()+"\n"); // muestra tamao del vector lblInformacion.setText("Nmero de elementos: "+ n); } //--------------void alInicio() { // leer nombre String nombre = txtNombre.getText(); if (nombre.length()==0) lblInformacion.setText("Ingrese un Nombre"); else { lblInformacion.setText(""); // agregar al inicio amigos.add(0,nombre); // muestra contenido del vector

07/07/2010 -

www.parainformaticos.com

Pgina - 46

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
muestraVector(); } } //--------------void quitaUno() { // leer nombre String nombre = txtNombre.getText(); if (nombre.length()==0) lblInformacion.setText("Ingrese un Nombre"); else { lblInformacion.setText(""); // si lo contiene if (amigos.contains(nombre)) { // saca el nombre del vector amigos.remove(nombre); // muestra contenido del vector muestraVector(); } else lblInformacion.setText("Nombre no encontrado"); } } //--------------void quitaTodos() { if (amigos.isEmpty()) lblInformacion.setText("El vector no tiene elementos"); else { lblInformacion.setText(""); amigos.clear(); muestraVector(); } } //-------------void elPrimero() { // obtiene el primero del vector como String String nombre = amigos.firstElement().toString(); // muestra nombre obtenido txtNombre.setText(nombre); txtNombre.selectAll(); } //-------------void elUltimo() { // obtiene el ultimo del vector como String String nombre = amigos.lastElement().toString(); // muestra nombre obtenido txtNombre.setText(nombre); txtNombre.selectAll(); } //-------------void empiezaCon() { // leer iniciales String nombre = txtNombre.getText(); if (nombre.length()==0)

07/07/2010 -

www.parainformaticos.com

Pgina - 47

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
lblInformacion.setText("Ingrese un Nombre"); else { int indexEncontrado=-1; String elemento=""; for (int i=0; i < amigos.size(); i++){ // obtiene elemento del arreglo como String elemento=amigos.elementAt(i).toString(); // si empieza con el nombre ingresado if (elemento.startsWith(nombre)){ indexEncontrado=i;//guarda indice break;// sale del for } } // si lo encontro if (indexEncontrado != -1){ lblInformacion.setText("Posicion: "+indexEncontrado); txtNombre.setText(elemento); txtNombre.selectAll(); } else // no lo encontro lblInformacion.setText("Ninguno empieza con "+nombre); } } //---------------void capacidad(){ // obtiene capacidad int capa= amigos.capacity(); // obtiene el tamao int tama= amigos.size(); // muestra capacidad y tamao lblInformacion.setText("Tamao: "+tama+", Capacidad: "+capa); } Recuerde que ste cdigo debe quedar ANTES del cdigo generado por NetBeans para su mtodo main(). Ya puede ejecutar su aplicacin presionando F6

Clase ArrayList: Jerarqua de clases y herencia: Java.lang.Object Java.util.AbstractCollection Java.util.AbstractList

07/07/2010 -

www.parainformaticos.com

Pgina - 48

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)
Java.util.ArrayList ArrayList es una clase que administra objetos en un arreglo redimensionable, de acuerdo a las necesidades de almacenamiento. Los objetos son de tipo Object, por tanto soporta cualquier tipo de objeto particular. Esta clase prove de diversos mtodos que permiten la administracin de los objetos. Esta clase es equivalente a la clase Vector, con la diferencia que no es sincronizable. Cada instancia de ArrayList tiene una capacidad. Cuando un objeto es agregado al arreglo, y se llene su capacidad, sta crece dinmica y automticamente. no sincronizable significa que si multiples hilos acceden a una instancia de ArrayList concurrentemente, y al menos uno de los hilos modifica el contenido , debe ser sincronizada externamente. Esto se logra generalmente mediante la sincronizacin a algn objeto, que integra la lista. Si no existe tal objeto, la lista debera ser "envuelto" utilizando el mtodo Collections.synchronizedList. Esto se consigue con la creacin en tiempo de ejecucin para evitar el borrado accidental por falta de sincronizacin de acceso a la lista: List list = Collections.synchronizedList(new ArrayList(...)); El iterador devuelto por esta clase y los mtodos listIterator son a prueba de fallas: si la lista es modificada en cualquier momento despus de que el iterador se crea, se produce una Excepcin de la clase ConcurrentModificationException. Resumen de Constructores ArrayList() Crea una lista vaca con capacidad inicial de diez. ArrayList(Collection<? extends E> c) Crea una lista que contiene elementos especificado por su parmetro, en el orden que establece el iterator de la coleccin. ArrayList(int initialCapacity) Crea una lista vaca con la capacidad inicial indicada como parmetro. Resumen de Mtodos boolean add(E e) Agrega el objeto del parmetro al final de la lista. void add(int index, E element) Inserta el objeto del parmetro en la posicin indicada. boolean addAll(Collection<? extends E> c) Agrega todos los elementos de la coleccin indicada como parmetro al final de la lista. boolean addAll(int index, Collection<? extends E> c) Inserta todos los elementos de la coleccin indicada como parmetro a partir de la posicin indicada. void clear() Elimina todos los elementos de la lista.

07/07/2010 -

www.parainformaticos.com

Pgina - 49

Anexo A Resumen de Clases AWT


Por: Julio Vsquez Paragulla (jvasquez@parainformaticos.com)

Object clone() Retorna una copia de ste ArrayList. boolean contains(Object o) Retorna true si la lista contiene al objeto del parmetro. E get(int index) Retorna el objeto de la lista que est en la posicin indicada como parmetro. int indexOf(Object o) Retorna la posicin de la primera ocurrencia del objeto dado como parmetro. En caso que no est en la lista retorna -1. boolean isEmpty() Retorna true si la lista est vaca. int lastIndexOf(Object o) Retorna la posicin de la ltima ocurrencia del objeto dado como parmetro. Si el objeto no se encuentra en la lista, retorna -1. E remove(int index) Elimina el objeto que se encuentra en la posicin indicada. boolean remove(Object o) Elimina la primera ocurrencia del objeto dado como parmetro si est en la lista. protected removeRange(int fromIndex, int toIndex) Elimina los objetos que se encuentren en las posiciones correspondientes al rango cerrado void dado como parmetro. E set(int index, E element) Reemplaza el objeto dado como parmetro al que se encuentre en la posicin indicada. int size() Retorna el nmero de objetos en la lista. Object[] toArray() Retorna en un arreglo de objetos todos los elementos de la lista. void trimToSize() Recorta la capacidad de la lista para que sea del tamao que corresponde al nmero de elementos que contiene. Ver aplicaciones de ejemplo en el captulo 09.

07/07/2010 -

www.parainformaticos.com

Pgina - 50

Vous aimerez peut-être aussi