Unidad 7 Abstract Window Toolkit Cuando se desarrolla un programa de Java es importante seleccionar apropiadamente los componentes de la GUI (Graphics User Interface). Hay dos conjuntos básicos de componentes que serán utilizados para implementar la interfaz de usuario. Estos dos grupos de componentes son AWT y Swing. 7.1 AWT AWT. El abstract window toolkit es una librería portable para aplicaciones y/o applets. Provee la conexión entre la aplicación y el sistema de ventanas nativo. Los componentes AWT dependen de sus contrapartes en código nativo (llamados peers) para manejar su funcionalidad, por lo que frecuentemente son llamados componentes heavyweigth. 7.1.1 Características de AWT Amplio conjunto de componentes para interfaz gráfica de usuario. Un modelo robusto para el manejo de eventos. Herramientas para manejo de gráficas e imágenes, incluyendo clases para forma, color y tipo de letra. Clases para transferencia de datos. 7.1.2 Ventajas de los componentes AWT Los componentes AWT son más rápidos porque usan peers nativos. La mayoria de los browsers soportan las clases AWT, así los applets pueden correr sin necesidad de un Java plugin. Los componentes AWT reflejan mejor la interfaz propia del sistema en el que están ejecutándose. Desventajas de los componentes AWT El uso de peers nativos crea limitaciones de plataforma, ya que algunos componentes podrían no funcionar en algunas plataformas. Muchas compañías, incluyendo Borland y Sun, basan el desarrollo de nuevos componentes en Swing. Los componentes awt no soportan características como iconos y tips. 7.2 Swing Esta implementado completamente en lenguaje Java. Los componentes swing no dependen de los peers para su funcionalidad, por lo que a estos componentes frecuentemente se le llama componentes lightweigth. 7.2.1 Características de Swing. Tiene todas las características de AWT Un conjunto de componentes de mayor nivel. Diseño en Java, no depende de código nativo. 7.2.2 Ventajas de Swing: El diseño en Java puro provee menores limitaciones de plataforma. El desarrollo de componentes Swing es más activo. Los componentes de swing soportan más características. Ing. Alma Leticia Palacios Guerrero Pág. 50
7.2.3 Desventajas La mayoría de los browsers no incluyen las clases Swing, por que es necesario usar un Java plugin. Los componentes swing generalmente son más lentos y presentan más problemas debido a que están hechos en Java puro y a problemas relacionados con video en varias plataformas. No siempre lucen igual que en el sistema donde fueron diseñados. 7.3 Componentes AWT El abstract window toolkit contiene todas las clases para crear interfaces de usuario y dibujar gráficos. Un objeto como un botón o una barra de desplazamiento, en terminología AWT es un componente. La clase componente es la raíz de todos los componentes AWT. Un contenedor es un componente que puede contener componentes y otros contenedores. La siguiente figura muestra el árbol de herencia para todas las clases componentes del AWT 7.3.1. Clase Frame La clase Frame proporciona marcos para los applets y las aplicaciones. 7.3.1.1 es Frame(); Frame(String); Crea un Frame, inicialmente es invisible. Crea un Frame, inicialmente es invisible que lleva por titulo el String recibido. 7.3.1.2 s show(); setvisible(boolean); seticonimage(image); setsize (int ancho, int alto); setlocation(int x, int y); settitle(string); Hace visible el frame Aparece/Esconde el frame Establece el Icono para el frame. Establece las medidas del Frame Establece la posición del frame en la pantalla. Define el titulo que aparece en la parte superior del frame. Ing. Alma Leticia Palacios Guerrero Pág. 51
7.3.1.3 Ejemplo Creación de un frame public class PruebaObjetoFrame { Frame f =new Frame(); f.settitle("otro Frame "); f.setsize(200,400); f.setlocation(300,300); f. 7.3.1.4 Ejemplo Creación de un frame 7.3.1.5 Cambio del icono de un frame class AwtFrame extends Frame{ public AwtFrame(String titulo){ settitle(titulo); setsize(200,400); setlocation(3,3); public class PruebaAwtFrame { System.out.println("Creando un Frame"); new AwtFrame("Ejemplo 6.3.1.4"); class AwtFrameCambiaIcono extends Frame{ public AwtFrameCambiaIcono(String titulo){ Image icono=toolkit.getdefaulttoolkit().getimage("devil.gif"); settitle(titulo); setsize(200,400); seticonimage(icono); public class PruebaAwtFrameCambiaIcono { System.out.println("Creando Marco"); new AwtFrameCambiaIcono("Ejemplo 6.3.1.5"); Ing. Alma Leticia Palacios Guerrero Pág. 52
7.3.2 Clase Color La clase color permite manipular los colores para las operaciones gráficas. Utilizando el código RGB (Red-Green-Blue). Cada color tiene un valor alfa implícito de 1.0 o un valor explícito especificado en el constructor. El valor alfa define la transparencia de un color y puede estar representado por un valor flotante de 0.0 a 1.0 o por un valor entero entre 0 y 255. Los constructores de la clase colores son: 7.3.2.1 es Color (int r,int g,int b); Color(float r,float g, float b); r representa el valor entero para rojo. g representa el valor entero para verde. b representa el valor entero para azul. r representa el valor flotante para rojo. g representa el valor flotante para verde. b representa el valor flotante para azul. La clase color tiene 13 constantes para los colores más comunes: Constante R (Red) G(Green) B(Blue) Color.black 0 0 0 Color.blue 0 0 255 Color.cyan 0 255 255 Color.darkGray 64 64 64 Color.gray 128 128 128 Color.green 0 255 0 Color.lightGray 192 192 192 Color.magenta 255 0 255 Color.orange 255 200 0 Color.pink 255 175 175 Color.red 255 0 0 Color.white 255 255 255 Color.yellow 255 255 0 7.3.2.2 Ejemplo: Cambio del color de fondo de un frame class AwtFrameColor extends Frame{ public AwtFrameColor(String titulo){ Image icono= Toolkit.getDefaultToolkit().getImage("devil.gif"); settitle(titulo); setsize(200,400); seticonimage(icono); setbackground(new Color(100,200,1)); public class PruebaAwtFrameColor { new AwtFrameColor("Ejemplo 6.3.2.2 "); Ing. Alma Leticia Palacios Guerrero Pág. 53
7.3.3 Clase Label La clase Label permite colocar un texto no seleccionable en un frame. Esta clase cuenta con métodos que permiten cambiar el color, el fondo, la alineación y el tipo de letra del texto de la etiqueta. 7.3.3.1 es Label() Label(String) Label(String, Alineacion) Crea una etiqueta vacía Crea una etiqueta con el texto indicado por el String. El texto esta justificado a la izquierda Crea una etiqueta con el texto indicado por el objeto String. El texto esta justificado a la izquierda (LEFT,RIGHT o CENTER) 7.3.3.2 s settext(string); setalignment(int); setbounds(int x,int y,int ancho,int altura); pack() setvisible(boolean); Establece el texto de la etiqueta. Establece la alineación del texto (LEFT,RIGHT o CENTER) Establece la posición y tamaño de la etiqueta. Ajusta el componente al tamaño indicado y layouts de sus componentes. Aparece/Esconde el componente 7.3.3.3 Ejemplo Uso del Componente Label class AwtFrameConLabel extends Frame{ void forma() { Label etiqueta1= new Label("Buenos Dias",0); Label etiqueta2= new Label("Buenos Tardes",1); Label etiqueta3= new Label("Buenos Noches",Label.RIGHT); settitle("probando Etiquetas"); setlayout(new FlowLayout() ); setlocation(100,100); etiqueta1.setbounds(120,100,100,40); etiqueta1.setbackground(color.red); etiqueta1.setforeground(color.blue); etiqueta2.setbackground(color.red); etiqueta2.setforeground(color.green); etiqueta3.setbackground(color.red); etiqueta3.setforeground(color.pink); add(etiqueta1); add(etiqueta2); add(etiqueta3); Ing. Alma Leticia Palacios Guerrero Pág. 54
7.3.3.4 Ejemplo Cambio del tipo de letra de una etiqueta class AwtLabelFont extends Frame{ Label etiqueta1,etiqueta2; Font tipoletra1,tipoletra2; void forma() { etiqueta1= new Label("Buenos Dias"); tipoletra1=new Font ("Monotype Corsiva",Font.PLAIN,14); etiqueta2= new Label("Buenos Dias"); tipoletra2=new Font ("Verdana",Font.PLAIN,14); settitle("probando Etiquetas y tipo de Letra"); setlayout(new FlowLayout() ); etiqueta1.setbounds(120,100,100,40); etiqueta1.setbackground(color.orange); etiqueta1.setforeground(color.magenta); etiqueta1.setalignment(label.right); etiqueta1.setfont(tipoletra1); etiqueta2.setbounds(120,100,100,40); etiqueta2.setbackground(color.blue); etiqueta2.setforeground(color.magenta); etiqueta2.setalignment(label.right); etiqueta2.setfont(tipoletra2); add(etiqueta1); add(etiqueta2); 7.3.4 Distribución de Componentes Clase Panel: Es el componente mas común para agrupar a otros componentes. Existen otras clases que ayudan a organizar los diversos Componentes que se desean incorporar a un Panel. En el método tradicional para organizar los componentes se usan coordenadas XY, pero en ocasiones esto no es conveniente, porque no todos los sistemas operativos trabajan con la misma resolución. Para resolver este problema, java proporciona varias clases de layout, que son esquemas predefinidos para distribuir los componentes. Los layouts más comunes de java son Ing. Alma Leticia Palacios Guerrero Pág. 55
7.3.5 Clase FlowLayout: En este esquema los componentes se organizan de izquierda a derecha hasta terminar la línea y luego continua en la siguiente. Los valores válidos para la alineación son: FlowLayout.LEFT, FlowLayout.RIGHT y FlowLayout.CENTER. Ejemplo 6.3.5.1 Uso de FlowLayout class FlowLayout1 extends Frame{ void forma() { Panel panel=new Panel(); settitle( FlowLayout"); panel. setlayout(new FlowLayout(FlowLayout.RIGHT) ); panel.add(new Label("Buenos Dias")); panel.add(new Label("Chilaquiles")); panel.add(new Label("Hot Cakes") ); panel.add(new Label("Menudo") ); panel.add(new Label("Fruta") ); panel.add(new Label("Cereal con Fruta") ); panel.add(new Label("Huevos con Jamon") ); panel.add(new Label("Buenos Tardes")); panel.add(new Label("Chilaquiles")); panel.add(new Label("Hot Cakes") ); panel.add(new Label("Menudo") ); panel.add(new Label("Fruta") ); panel.add(new Label("Cereal con Fruta") ); panel.add(new Label("Huevos con Jamon") ); panel.add(new Label("Buenos Noches")); panel.add(new Label("Chilaquiles")); panel.add(new Label("Hot Cakes") ); panel.add(new Label("Menudo") ); panel.add(new Label("Fruta") ); panel.add(new Label("Cereal con Fruta") ); add(panel); public class PruebaFlowLayout{ FlowLayout1 pagina=new FlowLayout1(); pagina.forma(); El programa anterior produce una salida como la de la siguiente figura en donde se observa que las etiquetas están alineadas hacia la derecha. Ing. Alma Leticia Palacios Guerrero Pág. 56
7.3.6 Clase BorderLayout El Layout BorderLayout, distribuye los componentes en las posiciones Center, North, South, East, West. North (arriba) ocupa toda la parte superior del panel, East (derecha) ocupa el lado derecho. South (abajo) la parte inferior, West (derecho) se ubica en la parte izquierdo del layout, finalmente: Center es el espacio que queda, una vez que se hayan rellenado las otras cuatro partes. 6.3.6.1 Ejemplo de Uso de BorderLayout class BorderLayout1 extends Frame{ Panel panel1; void forma() { add(panel1=new Panel() ); panel1.setlayout(new BorderLayout()); panel1.add("north", new Label("Norte",Label.CENTER)); panel1.add("south", new Label("Sur",Label.CENTER)); panel1.add("west", new Label("Oeste")); panel1.add("east", new Label("Sur")); panel1.add("center", new Label("Centro")); add(panel1); public class PruebaBorderLayout{ BorderLayout1 pagina=new BorderLayout1(); pagina.forma(); La salida del ejemplo de BorderLayout muestra un frame como el de la siguiente figura: Ing. Alma Leticia Palacios Guerrero Pág. 57
7.3.7 Clase GridLayout La clase GridLayout es un Layout que acomoda los componentes de un contenedor en una cuadrícula rectangular de m renglones por n columnas. El contenedor esta dividido en rectángulos del mismo tamaño y cada componente es ubicado en un rectángulo. 7.3.7.1 es GridLayout() GridLayout(renglones, columnas); GridLayout(ren, col, hgap,vgap); Crea una cuadricula de una columna por componente en un solo renglón. Crea una cuadricula con el número especificado de renglones y columnas. Crea una cuadricula con el número especificada de renglones y columnas; la separación horizontal es hgap, vgap es la separación vertical 7.3.7.2 s de la clase GridLayout sethgap(int) setvgap(int) setcolumns(int cols) setrows(int rows) Establece en pixeles la separación horizontal. Establece la separación vertical de los componentes en pixeles. Establece el número de columnas al número indicado. Establece el número de columnas al número indicado. 7.3.7.3 Ejemplo de GridLayout class GridLayout1 extends Frame { void forma() { GridLayout g; Label uno=new Label("uno"); Label dos=new Label("dos"); Label tres=new Label("tres"); Label cuatro=new Label("cuatro"); Label cinco=new Label("cinco"); Label seis=new Label("seis"); setlayout(g=new GridLayout(3,2)); uno.setbackground(color.pink); dos.setbackground(color.lightgray); tres.setbackground(color.cyan); cuatro.setbackground(color.orange); cinco.setbackground(color.yellow); seis.setbackground(new Color(100,185,25) ); add(uno); add(dos); add(tres); add(cuatro); add(cinco); add(seis); public class PruebaGridLayout{ public static void main( String args[]){ GridLayout1 layout =new GridLayout1(); layout.forma(); Ing. Alma Leticia Palacios Guerrero Pág. 58
Frame generado con el programa del ejemplo 7.3.7.3 Ing. Alma Leticia Palacios Guerrero Pág. 59
7.3.8 Clase GridBagLayout La clase GridBagLayout es un contenedor flexible que alinea los componentes vertical y horizontalmente, sin la necesidad de que los componentes sean del mismo tamaño. Los objetos GridBagLayout tienen una cuadrícula dinámica en la cual un componente puede ocupar mas de una celda. A cada componente del objeto GridBagLayout esta asociado con una instancia de la clase GridBagConstraints. El objeto de la clase GridBagConstraints. especifica dónde y cómo se desplegará el componente. 7.3.8.1 GridBagLayout() Crea un objeto GridBagLayout 7.3.8.2 GridBagConstraints A través de la clase GridBagConstraints se pueden especificar restricciones para los componentes de un objeto GridBagLayout. GridBagLayout cuenta con los siguientes campos. Campo Valores fill Establece como se va a rellenar el espacio de la celda si este es mayor que el componente. anchor gridx gridy insets Ubicación del componente dentro de la celda Indican el número de columna de la celda que ocupará el componente en la cuadrícula. Indican el número de renglón de la celda que ocupará el componente en la cuadrícula. Es un objeto de la clase Insets que especifica el espacio que habrá alrededor del componente. gridwidth número de celdas que va a ocupar el ancho del componente gridheight número de celdas que va a ocupar la altura del componente weightx weighty Especifica como se distribuye el espacio horizontal excedente. Especifica como se distribuye el espacio vertical excedente. NONE: No se va a ajustar. HORIZONTAL: El componente se ajusta horizontalmente. VERTICAL: El componente se ajusta verticalmente. BOTH: El componente se ajusta en ambos sentidos CENTER: coloca el componente al centro de las celdas que ocupa. NORTH. Coloca el componente en la parte superior de su área de desplegado centrado horizontalmente. NORTHEAST: Coloca el componente en la esquina superior derecha de su área. NORTHWEST: Coloca el componente en la esquina superior izquierda de su área de desplegado. EAST. Coloca el componente en el lado derecho de su área de desplegado, centrado verticalmente. SOUTH: Coloca el componente en la parte inferior de su área de desplegado, centrándolo horizontalmente. SOUTHEAST. Coloca el componente en la esquina inferior izquierda de su área. SOUTHWEST: Coloca el componente en la esquina inferior derecha de su área. WEST: Coloca el componente en el lado izquierdo de su área de desplegado, centrado verticalmente. Mayor igual que 0. Mayor igual que 0. Mayor igual que 0. Por default el valor es 1. También se puede usar REMAINDER, que indica que se va a ocupar desde la celda actual hasta el final de la cuadrícula. Por default el valor es 1. También se puede usar REMAINDER, que indica que se va a ocupar desde la celda actual hasta el final de la cuadrícula. El valor por default es 0. Se debe indicar un valor positivo. El valor por default es 0. Se debe indicar un valor positivo. Ing. Alma Leticia Palacios Guerrero Pág. 60
7.3.8.2 Ejemplo de GridBagLayout y GridBagConstraints import java.awt.* class AwtGridBagLayout extends Frame{ void forma() { GridBagLayout layout = new GridBagLayout(); setlayout(layout); GridBagConstraints c = new GridBagConstraints(); Label uno = new Label("Universidad autonoma de baja california"); uno.setbackground(color.pink); c.gridx = 0; c.gridy = 0; c.gridwidth = 2; c.insets=new Insets(5,5,5,5); c.fill = GridBagConstraints.BOTH; layout.setconstraints(uno,c); add(uno); Label dos = new Label("dos"); dos.setbackground(color.lightgray); c.gridx = 0; c.gridy = 1; c.gridwidth = 1; c.fill = GridBagConstraints.BOTH; layout.setconstraints(dos,c); add(dos); Label tres = new Label("tres"); tres.setbackground(color.cyan); c.gridx = 0; c.gridy = 2; c.fill = GridBagConstraints.BOTH; layout.setconstraints(tres,c); add(tres); Label cuatro = new Label("cuatro"); cuatro.setbackground(color.orange); c.gridx = 1; c.gridy = 1; c.gridheight = 2; c.fill = GridBagConstraints.NONE; layout.setconstraints(cuatro,c); add(cuatro); public class PruebaAwtGridBagLayout{ AwtGridBagLayout pagina=new AwtGridBagLayout(); pagina.forma(); El programa anterior produce el frame de la figura:. Ing. Alma Leticia Palacios Guerrero Pág. 61
7.3.8.3 Combinación de varios Layouts class AwtLayouts extends Frame{ void forma() { Panel panel1; GridLayout principal; settitle("probando Layouts"); setlayout(principal= new GridLayout(2,2)); principal.sethgap(20); principal.setvgap(20); add (panel1=new Panel() ); panel1.setlayout(new FlowLayout() ); panel1.add(new Label ("uno")); panel1.add(new Label ("dos")); panel1.add(new Label ("tres")); panel1.add(new Label ("cuatro")); panel1.setbackground(color.gray); add(panel1=new Panel()); panel1.setlayout(new GridLayout(2,2) ); panel1.add(new Label("Enero") ); panel1.add(new Label("Febrero")); panel1.add(new Label("Marzo")); panel1.add(new Label("Abril")); panel1.add(new Label("mayo")); panel1.add(new Label("junio")); panel1.setbackground(color.pink); add(panel1=new Panel() ); panel1.setlayout(new BorderLayout()); panel1.add("north", new Label("ARRIBA")); panel1.add("south", new Label("ABAJO")); panel1.add("west", new Label("IZQUIERDA")); panel1.add("east", new Label("DERECHA")); panel1.add("center", new Label("Centro")); panel1.setbackground(color.green); add(panel1=new Panel() ); panel1.setbackground(color.lightgray); GridBagLayout gbl=new GridBagLayout(); GridBagConstraints gbc=new GridBagConstraints(); panel1.setlayout(gbl); //renglon 1 gbc.anchor=gridbagconstraints.north; gbc.insets=new Insets(0,0,10,0); gbc.gridwidth=gridbagconstraints.remainder; panel1.add(new Label("Titulo"),gbc); gbc.fill=gridbagconstraints.horizontal; gbc.anchor=gridbagconstraints.west; gbc.gridwidth=1; gbc.insets=new Insets(0,0,0,0); panel1.add(new Label("Nombre"),gbc);// renglon 2 gbc.gridwidth=gridbagconstraints.remainder; panel1.add(new TextField(25),gbc ); gbc.gridwidth=1; // renglon 3 Ing. Alma Leticia Palacios Guerrero Pág. 62
Continua Ejemplo 7.3.8.3 panel1.add(new Label("Direccion"),gbc); gbc.gridwidth=gridbagconstraints.remainder; panel1.add(new TextField(25),gbc); gbc.gridwidth=3; // renglon 4 gbc.gridheight=2; gbc.anchor=gridbagconstraints.center; panel1.add(new Label ("Ciudad"),gbc); gbc.gridwidth=gridbagconstraints.remainder; gbc.fill=gridbagconstraints.horizontal; panel1.add(new Label ("Estado"),gbc); gbc.gridwidth=1; //renglon 5 panel1.add(new Label("Telefono"),gbc); gbc.gridwidth=gridbagconstraints.remainder; panel1.add(new TextField(25),gbc); public class PruebaAwtLayouts { AwtLayouts pagina=new AwtLayouts(); pagina.forma(); El programa PruebaAwtLayouts genera una pantalla como la de la figura. En la pantalla se observan cuatro paneles donde se incluyen ejemplos de todos los layouts vistos en las secciones anteriores. En el panel superior izquierdo esta el FlowLayout, en el superior derecho se aplica GridLayout, en el inferior izquierdo se utilizó BorderLayout, finalmente en el panel inferior izquierdo el Layout corresponde a GridBagLayout. Ing. Alma Leticia Palacios Guerrero Pág. 63
7.3 Clase Button La clase Button crea un botón con texto. Los objetos de esta clase, soportan cambio de color de fondo y letra, pero no es posible agregarles imágenes. 7.4.1 Constructures Button(); Button(String); Crea un boton sin texto Crea un botos con el texto especificado 7.4.2 s de la clase Button setfont(font); Establece el tipo Letra setbackground(color); Selecciona color del fondo setforeground(color); Cambia el color de la letra setlabel(string) Cambia la etiqueta del botón. 7.4.3 Ejemplo de Clase Button class AwtBotones extends Frame{ void forma(){ Button boton1=new Button("Aceptar"); Button boton2= new Button(); boton1.setbackground(color.pink); boton1.setfont(new Font("Monospaced",Font.ITALIC,10)) ; boton2.setlabel("cancelar"); setlayout(new FlowLayout()); add(boton1); add(boton2); public class PruebaAwtBotones { AwtBotones pagina=new AwtBotones(); pagina.forma(); El frame generado por el programa anterior es: Ing. Alma Leticia Palacios Guerrero Pág. 64
7.5 Clase TextField Los objetos de la clase TextField, proveen campos de texto seleccionable y permiten que el usuario edite dicho texto. Al igual que los otros componentes tiene atributos para personalizar el texto. 7.5.1 Constructures TextField() TextField(columnas), TextField(String), TextField(String, int); Construye un campo texto de 20 columnas de ancho. Construye un campo texto con el tamaño indicado. Construye un campo texto inicializado con la cadena indicada Construye un campo texto. Lo inicializa con el texto y el número de texto indicado. 7.5.2 s de la clase TextField int getcolumns() Devuelve el número de columnas del campo de texto. setechochar(char) Establece el carácter que se verá al teclear en el campo. 7.5.3 Ejemplo del componente TextField El programa muestra la siguiente ventana: class AwtCampoTexto extends Frame{ void forma() { setlayout(new FlowLayout() ); TextField tf1, tf2, tf3, tf4; tf1 = new TextField(); tf2 = new TextField("", 20); tf3 = new TextField("Hola"); tf4 = new TextField("Hola", 30); tf3.setechochar('*'); add(tf1); add(tf2); add(tf3); add(tf4); public class PruebaAwtCampoTexto{ AwtCampoTexto pagina=new AwtCampoTexto(); pagina.forma(); Ing. Alma Leticia Palacios Guerrero Pág. 65
7.6 Clase TextArea Un objeto de la clase TextArea es una región multilínea que presenta texto. Este componente permite que el texto sea editado o de sólo lectura. 7.6.1 es TextArea() TextArea(int, int), TextArea(String) TextArea(String, col, ren). TextArea(String, col, ren, scrollbars). Construye un área de Texto vacía. Construye un área de Texto vacía del tamaño especificado Construye un área de Texto inicializada con la cadena indicada. Construye un área de Texto con el tamaño y cadena indicados. Construye un área de texto con el tamaño y cadena especificados. Activa las barras de desplazamiento que se indiquen. SCROLLBARS_BOTH. Activa ambas barras SCROLLBARS_HORIZONTAL_ONLY.Sólo barra horizontal. SCROLLBARS_NONE. Sin barras de desplazamiento. SCROLLBARS_VERTICAL_ONLY. Sólo barra vertical. 7.6.2 s de la clase TextArea int getcolumns() int getrows() void insert(string, int) void append(string) setechochar(char) Devuelve el número de columnas del área de texto. Devuelve el número de renglones del área de texto. Inserta el texto especificado en la posición indicada. Agrega el texto al área de texto. Establece el carácter que se verá al teclear en el campo. 7.6.3 Ejemplo del componente TextArea class AwtAreaTexto extends Frame{ void forma() { setlayout(new FlowLayout() ); Label etiqueta=new Label("Escriba aqui su mensaje"); TextArea areatexto; areatexto = new TextArea("",5, 0,TextArea.SCROLLBARS_NONE); areatexto.setbackground(color.blue); areatexto.setforeground(color.white); add(etiqueta); add(areatexto); public class PruebaAwtAreaTexto{ AwtAreaTexto pagina=new AwtAreaTexto(); pagina.forma(); El programa del ejemplo anterior presenta una pantalla como la siguiente: Ing. Alma Leticia Palacios Guerrero Pág. 66
7.7 Checkbox El componente Checkbox es un componente gráfico que puede estar en uno de dos estados: on/off (verdadero/falso), tales estados se eligen través del mouse. El componente Checkbox consiste en una caja pequeña y una etiqueta. Por default, su estado es off (false). 7.7.1 es Checkbox() Checkbox(String) Checkbox(String,Boolean) Checkbox(String, CheckboxGroup,Boolean); Crea un check box sin etiqueta. Crea un check box con la etiqueta indicada. Crea un check box con la etiqueta y estado indicados. Crea un check box con la etiqueta y estado indicados. El componente pertenecerá al grupo indicado. 7.7.2 s de la clase Checkbox setlabel(string) setstate(boolean) additemlistener(itemlistener) Cambiar el contenido de la etiqueta Cambia el estado del checkbox on/off (true/false) Agrega un oyente para detectar eventos generados por el componente. 7.7.3 Ejemplo del componente Checkbox class AwtCheckbox{ public void forma() { Frame frm=new Frame("Probando Checkbox"); frm. setlayout(new GridLayout(3,1)); Checkbox casilla1= new Checkbox(); Checkbox casilla2= new Checkbox("Opcion 2"); Checkbox casilla3= new Checkbox("Opcion 3", true); casilla1.setforeground(color.blue); casilla1.setlabel("opcion1"); casilla2.setstate(true); frm.add(casilla1); frm.add(casilla2); frm.add(casilla3); frm. class PruebaAwtCheckbox { AwtCheckbox pagina=new AwtCheckbox(); pagina.forma(); El código anterior genera la siguiente pantalla: Ing. Alma Leticia Palacios Guerrero Pág. 67
7.8 Clase CheckBoxGroup (Radio Button) La clase CheckBoxGroup se usa para agrupar un conjunto de componentes Checkbox. En la clase CheckboxGroup solo uno de los Checkbox puede estar seleccionado. 7.8.1 es de la clase CheckBoxGroup Checkbox() Crea un componente CheckBoxGroup. 7.8.2 s de la clase Checkbox getselectedcheckbox() Regresa el componente que esté seleccionado. setselectedcheclkbox(checkbox) Establece el componente seleccionado. 7.8.3 Ejemplo del componente CheckBoxGroup class AwtCheckBoxGroup extends Frame{ void forma() { CheckboxGroup grupo= new CheckboxGroup(); Checkbox casilla1= new Checkbox("azul", grupo, true); Checkbox casilla2= new Checkbox("rojo", grupo, false); Checkbox casilla3= new Checkbox("amarillo", grupo, false); casilla1.setforeground(color.blue); casilla1.setbackground(color.orange); casilla2.setforeground(color.red); casilla2.setbackground(color.orange); casilla3.setforeground(color.yellow); casilla3.setbackground(color.orange); Panel p=new Panel(); p.setlayout(new GridLayout(4, 1)); add(p); p.add(casilla1); p.add(casilla2); p.add(casilla3); public class PruebaAwtCheckBoxGroup { AwtCheckBoxGroup pagina=new AwtCheckBoxGroup(); pagina.forma(); Salida generada por el ejemplo de la clase CheckBoxGroup Ing. Alma Leticia Palacios Guerrero Pág. 68
7.9 Clase Choice La clase Choice genera un lista opciones con un formato menú pop-up. Se utiliza cuando se va a presentar varias opciones, pero no se cuenta con espacio suficiente. A este componente también se le llama lista desplegable. 7.9.1 es de la clase Choice Choice(); Crea un nuevo menu choice 7.9.2 s de la clase Choice void add(string item); int getselectedindex() String getselecteditem() void remove(string) void remove(int ) void additemlistener(itemlistener) Agrega un elemento a la lista Regresa el indice de elemento seleccionado Regresa la selección actual como un string. remueve de la lista el elemento indicado en la cadena. remueve de la lista el elemento de la posición indicada. Agrega el oyente especificado para eventos generados por este componente. 7.9.3 Ejemplo de la clase Choice class AwtChoice extends Frame{ void forma() { setlayout(new FlowLayout() ); Choice menu= new Choice(); menu.add("opcion 1"); menu.add("opcion 2"); menu.add("opcion 3"); menu.add("opcion 4"); menu.setforeground(color.yellow); menu.setbackground(color.pink); add(menu); public class PruebaAwtChoice { AwtChoice pagina=new AwtChoice(); pagina.forma(); El ejemplo produce la siguiente ventana: Ing. Alma Leticia Palacios Guerrero Pág. 69
7.10 Clase List La clase List provee un área desplegable que contiene elementos seleccionables (uno por línea). Las listas permiten selección múltiples o sólo una opción a la vez. 7.10.1 es de la clase List List(); List(int lineas); List(int Lineas, Boolean SelecciónMultiple); Crea una nueva lista. Crea una lista con el número de líneas indicadas. Crea una nueva lista con las líneas indicadas. Activa/Desactiva la selección múltiple 7.10.2 s de la clase List Además de los constructores la clase List proporciona los siguientes métodos: int getitemcount() Devuelve el número de opciones de la Lista. String getitem(int) Devuelve el String asociado con el índice especificado. void add (String, int) Añade la opción en la posición índicada. void add (String, int) Añade la opción al final de la lista. int getselectedindex() Regresa el índice de la opción seleccionada. Regresa -1 si no se seleccionó una opción o si se selecciona más de una. int[] getselectedindexes() Devuelve los índices de las opciones seleccionadas. String getselecteditem() Regresa el String de la opción seleccionada. Regresa null si no hay opción seleccionada o si se selecciona más de una. String[] getselecteditems() Devuelve las cadenas de las opciones seleccionadas. void remove(string) remueve de la lista el elemento indicado en la cadena. void remove(int ) remueve de la lista el elemento de la posición indicada. void ActionListener(ActionListener) Agrega un oyente para eventos generados por esta lista. 7.10.3 Ejemplo de la clase List class AwtList extends Frame{ void forma() { setlayout(new FlowLayout() ); List lista = new List(2,true); lista.add("lunes"); lista.add("martes");; lista.add("miercoles"); lista.add("jueves"); lista.add("viernes"); lista.add("sabado"); lista.add("domingo"); add(lista); public class PruebaAwtList{ AwtList pagina=new AwtList(); pagina.forma(); Ing. Alma Leticia Palacios Guerrero Pág. 70