You are on page 1of 25

Introducción a la Programación en Java

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


Introducción a la Programación en Java

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 Constructores

Constructor Descripción
Frame(); Crea un Frame, inicialmente es invisible.

Frame(String); Crea un Frame, inicialmente es invisible


que lleva por titulo el String recibido.

7.3.1.2 Métodos

Método Descripción
show(); Hace visible el frame
setVisible(boolean); Aparece/Esconde el frame
setIconImage(Image); Establece el Icono para el frame.
setSize (int ancho, int alto); Establece las medidas del Frame
setLocation(int x, int y); Establece la posición del frame
en la pantalla.
setTitle(String); Define el titulo que aparece en la
parte superior del frame.

Ing. Alma Leticia Palacios Guerrero Pág. 51


Introducción a la Programación en Java

7.3.1.3 Ejemplo Creación de un frame

import java.awt.*;

public class PruebaObjetoFrame {


public static void main(String args[]){
Frame f =new Frame();

f.setTitle("Otro Frame ");


f.setSize(200,400);
f.setLocation(300,300);
f.setVisible(true);
}
}

7.3.1.4 Ejemplo Creación de un frame

import java.awt.*;
class AwtFrame extends Frame{
public AwtFrame(String titulo){
setTitle(titulo);
setSize(200,400);
setLocation(3,3);
setVisible(true);
}
}

public class PruebaAwtFrame {


public static void main(String args[]){
System.out.println("Creando un Frame");
new AwtFrame("Ejemplo 6.3.1.4");
}
}

7.3.1.5 Cambio del icono de un frame

import java.awt.*;
class AwtFrameCambiaIcono extends Frame{

public AwtFrameCambiaIcono(String titulo){


Image icono=Toolkit.getDefaultToolkit().getImage("devil.gif");
setTitle(titulo);
setSize(200,400);
setIconImage(icono);
setVisible(true);
}
}

public class PruebaAwtFrameCambiaIcono {


public static void main(String args[]){
System.out.println("Creando Marco");
new AwtFrameCambiaIcono("Ejemplo 6.3.1.5");
}
}

Ing. Alma Leticia Palacios Guerrero Pág. 52


Introducción a la Programación en Java

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 Constructores

Constructor Descripción
Color (int r,int g,int b); r representa el valor entero para rojo.
g representa el valor entero para verde.
b representa el valor entero para azul.
Color(float r,float g, float b); 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

import java.awt.*;
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));
setVisible(true);
}
}
public class PruebaAwtFrameColor {
public static void main(String args[]){
new AwtFrameColor("Ejemplo 6.3.2.2 ");
}
}

Ing. Alma Leticia Palacios Guerrero Pág. 53


Introducción a la Programación en Java

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 Constructores

Constructor Descripción
Label() Crea una etiqueta vacía
Label(String) Crea una etiqueta con el texto indicado por el
String. El texto esta justificado a la izquierda
Label(String, Alineacion) 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 Métodos

Método Descripción
setText(String); Establece el texto de la etiqueta.
setAlignment(int); Establece la alineación del texto
(LEFT,RIGHT o CENTER)
setBounds(int x,int y ,int ancho,int altura); Establece la posición y tamaño de la etiqueta.
pack() Ajusta el componente al tamaño indicado y
layouts de sus componentes.
setVisible(boolean); Aparece/Esconde el componente

7.3.3.3 Ejemplo Uso del Componente Label

import java.awt.*;
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);
pack();
setVisible(true);
}
}}

Ing. Alma Leticia Palacios Guerrero Pág. 54


Introducción a la Programación en Java

7.3.3.4 Ejemplo Cambio del tipo de letra de una etiqueta

import java.awt.*;

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);
pack();
setVisible(true);
}
}

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


Introducción a la Programación en Java

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

import java.awt.*;
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);
pack(); setVisible(true);
}
}
public class PruebaFlowLayout{
public static void main(String args[]){
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


Introducción a la Programación en Java

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

import java.awt.*;

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);
pack();
setVisible(true);
}
}

public class PruebaBorderLayout{

public static void main(String args[]){


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


Introducción a la Programación en Java

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 Constructores

Constructor Descripción
GridLayout() Crea una cuadricula de una columna por componente en
un solo renglón.
GridLayout(renglones, columnas); Crea una cuadricula con el número especificado de
renglones y columnas.
GridLayout(ren, col, hgap,vgap); 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 Métodos de la clase GridLayout

Método Descripción
setHgap(int) Establece en pixeles la separación horizontal.
setVgap(int) Establece la separación vertical de los componentes en pixeles.
setColumns(int cols) Establece el número de columnas al número indicado.
setRows(int rows) 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);
pack();
setVisible(true);
}
}
public class PruebaGridLayout{
public static void main( String args[]){
GridLayout1 layout =new GridLayout1();
layout.forma();
}
}

Ing. Alma Leticia Palacios Guerrero Pág. 58


Introducción a la Programación en Java

Frame generado con el programa del ejemplo 7.3.7.3

Ing. Alma Leticia Palacios Guerrero Pág. 59


Introducción a la Programación en Java

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 Constructor

Constructor Descripción
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 Descripción Valores


fill Establece como se va a NONE: No se va a ajustar.
rellenar el espacio de la HORIZONTAL: El componente se ajusta horizontalmente.
celda si este es mayor VERTICAL: El componente se ajusta verticalmente.
que el componente. BOTH: El componente se ajusta en ambos sentidos
anchor Ubicación del CENTER: coloca el componente al centro de las celdas que ocupa.
componente dentro de la NORTH. Coloca el componente en la parte superior de su área de
celda 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.
gridx Indican el número de columna de la celda que Mayor igual que 0.
ocupará el componente en la cuadrícula.
gridy Indican el número de renglón de la celda que Mayor igual que 0.
ocupará el componente en la cuadrícula.
insets Es un objeto de la clase Insets que especifica el Mayor igual que 0.
espacio que habrá alrededor del componente.
gridwidth número de celdas que va Por default el valor es 1. También se puede usar
a ocupar el ancho del REMAINDER, que indica que se va a ocupar desde la celda actual
componente hasta el final de la cuadrícula.
gridheight número de celdas que va Por default el valor es 1. También se puede usar
a ocupar la altura del REMAINDER, que indica que se va a ocupar desde la celda actual
componente hasta el final de la cuadrícula.
weightx Especifica como se El valor por default es 0. Se debe indicar un valor positivo.
distribuye el espacio
horizontal excedente.
weighty Especifica como se El valor por default es 0. Se debe indicar un valor positivo.
distribuye el espacio
vertical excedente.

Ing. Alma Leticia Palacios Guerrero Pág. 60


Introducción a la Programación en Java

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);
pack();
setVisible(true);
}
}
public class PruebaAwtGridBagLayout{
public static void main(String args[]){
AwtGridBagLayout pagina=new AwtGridBagLayout();
pagina.forma();
}
}

El programa anterior produce el frame de la figura:.

Ing. Alma Leticia Palacios Guerrero Pág. 61


Introducción a la Programación en Java

7.3.8.3 Combinación de varios Layouts

import java.awt.*;
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


Introducción a la Programación en Java

… 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);
pack();
setVisible(true);
}
}

public class PruebaAwtLayouts {


public static void main(String args[]){
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


Introducción a la Programación en Java

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

Constructor Descripción
Button(); Crea un boton sin texto
Button(String); Crea un botos con el texto especificado

7.4.2 Métodos de la clase Button

Método Descripción
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

import java.awt.*;
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);
pack();
setVisible(true);
}
}

public class PruebaAwtBotones {


public static void main(String args[]){
AwtBotones pagina=new AwtBotones();
pagina.forma();
}
}

El frame generado por el programa anterior es:

Ing. Alma Leticia Palacios Guerrero Pág. 64


Introducción a la Programación en Java

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

Constructor Descripción
TextField() Construye un campo texto de 20 columnas de ancho.
TextField(columnas), Construye un campo texto con el tamaño indicado.
TextField(String), Construye un campo texto inicializado con la cadena indicada
TextField(String, int); Construye un campo texto. Lo inicializa con el texto y el número
de texto indicado.

7.5.2 Métodos de la clase TextField

Método Descripción
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

import java.awt.*;
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);
pack();
setVisible(true);
}
}

public class PruebaAwtCampoTexto{


public static void main(String args[]){
AwtCampoTexto pagina=new AwtCampoTexto();
pagina.forma();
}
}

El programa muestra la siguiente ventana:

Ing. Alma Leticia Palacios Guerrero Pág. 65


Introducción a la Programación en Java

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 Constructores

Constructor Descripción
TextArea() Construye un área de Texto vacía.
TextArea(int, int), Construye un área de Texto vacía del tamaño especificado
TextArea(String) Construye un área de Texto inicializada con la cadena indicada.
TextArea(String, col, ren). Construye un área de Texto con el tamaño y cadena indicados.
TextArea(String, col, ren, scrollbars). 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 Métodos de la clase TextArea

Método Descripción
int getColumns() Devuelve el número de columnas del área de texto.
int getRows() Devuelve el número de renglones del área de texto.
void insert(String, int) Inserta el texto especificado en la posición indicada.
void append(String) Agrega el texto al área de texto.
setEchoChar(char) Establece el carácter que se verá al teclear en el campo.

7.6.3 Ejemplo del componente TextArea

import java.awt.*;
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);
pack();
setVisible(true);
}
}
public class PruebaAwtAreaTexto{
public static void main(String args[]){
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


Introducción a la Programación en Java

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 Constructores

Constructor Descripción
Checkbox() Crea un check box sin etiqueta.
Checkbox(String) Crea un check box con la etiqueta indicada.
Checkbox(String,Boolean) Crea un check box con la etiqueta y estado indicados.
Checkbox(String, CheckboxGroup,Boolean); Crea un check box con la etiqueta y estado indicados. El
componente pertenecerá al grupo indicado.

7.7.2 Métodos de la clase Checkbox

Método Descripción
setLabel(String) Cambiar el contenido de la etiqueta
setState(boolean) Cambia el estado del checkbox on/off (true/false)
addItemListener(ItemListener) Agrega un oyente para detectar eventos generados por el componente.

7.7.3 Ejemplo del componente Checkbox

import java.awt.*;
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.setVisible(true);
}
}
class PruebaAwtCheckbox {
public static void main(String args[]){
AwtCheckbox pagina=new AwtCheckbox();
pagina.forma();
}
}

El código anterior genera la siguiente pantalla:

Ing. Alma Leticia Palacios Guerrero Pág. 67


Introducción a la Programación en Java

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 Constructores de la clase CheckBoxGroup

Constructor Descripción
Checkbox() Crea un componente CheckBoxGroup.

7.8.2 Métodos de la clase Checkbox

Método Descripción
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);
pack();
setVisible(true);
}
}
public class PruebaAwtCheckBoxGroup {
public static void main(String args[]){
AwtCheckBoxGroup pagina=new AwtCheckBoxGroup();
pagina.forma();
}
}

Salida generada por el ejemplo de la clase CheckBoxGroup

Ing. Alma Leticia Palacios Guerrero Pág. 68


Introducción a la Programación en Java

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 Constructores de la clase Choice

Constructor Descripción
Choice(); Crea un nuevo menu choice

7.9.2 Métodos de la clase Choice

Método Descripción
void add(String item); Agrega un elemento a la lista
int getSelectedIndex() Regresa el indice de elemento seleccionado
String getSelectedItem() Regresa la selección actual como un string.
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 addItemListener(ItemListener) Agrega el oyente especificado para eventos generados
por este componente.

7.9.3 Ejemplo de la clase Choice

import java.awt.*;
class AwtChoice extends Frame{ El ejemplo produce la siguiente ventana:
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);
pack();
setVisible(true);
}
}
public class PruebaAwtChoice {
public static void main(String args[]){
AwtChoice pagina=new AwtChoice();
pagina.forma();
}

Ing. Alma Leticia Palacios Guerrero Pág. 69


Introducción a la Programación en Java

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 Constructores de la clase List


Constructor Descripción
List(); Crea una nueva lista.
List(int lineas); Crea una lista con el número de líneas indicadas.
List(int Lineas, Boolean SelecciónMultiple); Crea una nueva lista con las líneas indicadas.
Activa/Desactiva la selección múltiple

7.10.2 Métodos de la clase List


Además de los constructores la clase List proporciona los siguientes métodos:
Método Descripción
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);
pack();
setVisible(true);
}
}
public class PruebaAwtList{
public static void main(String args[]){
AwtList pagina=new AwtList();
pagina.forma();
}
}

Ing. Alma Leticia Palacios Guerrero Pág. 70


Introducción a la Programación en Java

7.11 Componentes MenuBar, Menu y MenuItem


El componente MenuBar crea una barra de menú en un frame, trabaja con las clases Menu y
MenuItem. La clase Menu crea un opción de un MenuBar (un submenú) y la clase MenuItem
representa una opción de un menú. La `clase MenuBar no puede usarse en combinación con la clase
Panel.

7.11.1 Constructores de la Clase MenuBar


Constructor Descripción
MenuBar() Crea un nuevo componente MenuBar.

7.11.1.1Métodos de la clase MenuBar

Método Descripción
add(Menu) Agrega el submenú al componente MenuBar.
int getMenuCount() Regresa el número de submenus en el componente
MenuBar.

7.11.2 Clase Menu


Un Objeto Menu es un menú desplegable que se forma parte de una barra de menú.

7.11.2.1 Constructores de la Clase Menu


Constructor Descripción
Menu() Crea un nuevo componente MenuBar.
Menu(String) El encabezado del menú será la cadena indicada en String.

7.11.2.2 Métodos de la clase Menu

Método Descripción
add(MenuItem) Agrega la opción m al menú.
add(String e); Agrega una opción con la etiqueta e al menú
addSeparator(); Inserta una línea (separador) en el menú

7.11.3 Clase MenuItem

Todos los elementos en un menú deben pertenecer a la clase MenuItem o a una de sus subclases. El
objeto menú es una etiqueta que contiene al elemento del menú.

7.11.3.1 Constructores de la clase MenuItem

Constructor Descripción
MenuItem(); Crea un elemento con etiqueta vacía y sin shortcut.
MenuItem(String ); Crea un elemento de menú con la etiqueta especificada.
MenuItem(String, MenuShortcut ); Crea un elemento de menú con la etiqueta indicada y al
que se podrá acceder con el shortcut s

7.11.3.2Métodos de la clase MenuItem

Método Descripción
setEnabled(boolean b) Establece si esta elemento puede o no ser seleccionado.
setLabel(String s) Cambia la etiqueta del elemento a la especificada en s.
setShorcut(MenuShortcut) Asocia el elemento con el shortcut indicado.
ActionListener(ActionListener) Agrega un oyente para eventos generados por este
elemento.

Ing. Alma Leticia Palacios Guerrero Pág. 71


Introducción a la Programación en Java

7.11.4 Ejemplo con las clases MenuBar, Menu y MenuItem

import java.awt.*;

class AwtMenu extends Frame{


void forma(){
MenuBar menuBar=new MenuBar();
Menu menuA=new Menu("FCQI",false);
Menu menuB=new Menu("FCA",true);
MenuItem primerElementoA =new MenuItem(" Ing.en Computacion ");
MenuItem segundoElementoA =new MenuItem(" Ing.en Electronica ");
MenuItem tercerElementoA =new MenuItem(" Ing. Quimico");
MenuItem primerElementoB =new MenuItem(" Contador Publico ");
MenuItem segundoElementoB =new MenuItem(" Lic. Informática ");
MenuItem tercerElementoB =new MenuItem(" LAE");
Panel p;

setTitle("Prueba de Clase MenuBar");


setLayout(new FlowLayout() );
setMenuBar(menuBar);
menuBar.add(menuA);
menuA.add(primerElementoA);
menuA.add(segundoElementoA);
menuA.add(tercerElementoA);
menuBar.add(menuB);
menuB.add(primerElementoB);
menuB.add(segundoElementoB);
menuB.add(tercerElementoB);
add(p=new Panel());
p.add(new Button("Hola"));
p.add(new Label("Texto"));
p.add(new Button("Hola"));
p.add(new Label("Texto"));
pack();
setVisible(true);
}
}
public class PruebaAwtMenu{
public static void main(String args[]){
AwtMenu pagina=new AwtMenu();
pagina.forma();
}
}

Ing. Alma Leticia Palacios Guerrero Pág. 72


Introducción a la Programación en Java

7.11.5 Ejemplo de barra de menú con separador y con CheckBoxmenuItem.

import java.awt.*;
import java.awt.event.*;

class ComponentesMenuBar
{ Frame marco;
List lista;
MenuBar barramenu= new MenuBar();

ComponentesMenuBar()
{ marco=new Frame();
Menu opc1=new Menu("Opcion 1");
Menu opc2=new Menu("Opcion 2");
Menu opc3=new Menu("Opcion 3");
Menu ayuda=new Menu("Help");
barramenu.add(opc1);
barramenu.add(opc2);
barramenu.add(opc3);
barramenu.add(ayuda);
MenuItem op1_1=new MenuItem("Altas");
MenuItem op1_2=new MenuItem("Bajas");
MenuItem op1_3=new MenuItem("Salir");

MenuItem op2_1=new MenuItem("Consultas");


MenuItem op2_2=new MenuItem("Busqueda");
MenuItem op2_3=new MenuItem("Salir");

CheckboxMenuItem op3_1=new CheckboxMenuItem("Imprimir");


MenuItem op3_2=new MenuItem("Guardar");
MenuItem op3_3=new MenuItem("-");
MenuItem op3_4=new MenuItem("Salir", new MenuShortcut(KeyEvent.VK_X,false) );

opc1.add(op1_1);
opc1.add(op1_2);
opc1.addSeparator();
opc1.add(op1_3);
opc1.add("Hola");

opc2.add(op2_1);
opc2.add(op2_2);
opc2.add(op2_3);

opc3.add(op3_1);
opc3.add(op3_2);
opc3.add(op3_3);
opc3.add(op3_4);

marco.setMenuBar(barramenu);
marco.pack();
marco.setVisible(true);
}
}

public class PruebaComponentesMenuBar{


public static void main(String args[]) {
ComponentesMenuBar obj=new ComponentesMenuBar();
}
}

Ing. Alma Leticia Palacios Guerrero Pág. 73


Introducción a la Programación en Java

Pantallas generadas por el ejemplo 7.11.5 menú con separador y con CheckBoxmenuItem.

Ing. Alma Leticia Palacios Guerrero Pág. 74

You might also like