Download Introducción a la Programación en Java Unidad 7 Abstract Window

Document related concepts
no text concepts found
Transcript
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
Frame();
Descripción
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
show();
setVisible(boolean);
setIconImage(Image);
setSize (int ancho, int alto);
setLocation(int x, int y);
setTitle(String);
Ing. Alma Leticia Palacios Guerrero
Descripción
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.
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
Color (int r,int g,int b);
Color(float r,float g, float b);
Descripción
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
Color.black
Color.blue
Color.cyan
Color.darkGray
Color.gray
Color.green
Color.lightGray
Color.magenta
Color.orange
Color.pink
Color.red
Color.white
Color.yellow
R (Red) G(Green) B(Blue)
0
0
0
64
128
0
192
255
255
255
255
255
255
0
0
255
64
128
255
192
0
200
175
0
255
255
0
255
255
64
128
0
192
255
0
175
0
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
Label()
Label(String)
Label(String, Alineacion)
Descripción
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 Métodos
Método
setText(String);
setAlignment(int);
setBounds(int x,int y ,int ancho,int altura);
pack()
setVisible(boolean);
Descripción
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
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()
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 Métodos de la clase GridLayout
Método
setHgap(int)
setVgap(int)
setColumns(int cols)
setRows(int rows)
Descripción
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);
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
GridBagLayout()
Descripción
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
fill
Descripción
Establece como se va a
rellenar el espacio de la
celda si este es mayor
que el componente.
Ubicación del
componente dentro de la
celda
Valores
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.
anchor
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.
Indican el número de columna de la celda que
Mayor igual que 0.
gridx
ocupará el componente en la cuadrícula.
Indican el número de renglón de la celda que
Mayor igual que 0.
gridy
ocupará el componente en la cuadrícula.
Es un objeto de la clase Insets que especifica el
Mayor igual que 0.
insets
espacio que habrá alrededor del componente.
Por default el valor es 1. También se puede usar
gridwidth número de celdas que va
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.
Por default el valor es 1. También se puede usar
gridheight número de celdas que va
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.
Especifica como se
El valor por default es 0. Se debe indicar un valor positivo.
weightx
distribuye el espacio
horizontal excedente.
Especifica como se
El valor por default es 0. Se debe indicar un valor positivo.
weighty
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
Button();
Button(String);
Descripción
Crea un boton sin texto
Crea un botos con el texto especificado
7.4.2 Métodos de la clase Button
Método
setFont(Font);
setBackground(Color);
setForeground(Color);
setLabel(String)
Descripción
Establece el tipo Letra
Selecciona color del fondo
Cambia el color de la letra
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
TextField()
TextField(columnas),
TextField(String),
TextField(String, int);
Descripción
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 Métodos de la clase TextField
Método
Descripción
Devuelve el número de columnas del campo de texto.
int getColumns()
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
TextArea()
TextArea(int, int),
TextArea(String)
TextArea(String, col, ren).
TextArea(String, col, ren, scrollbars).
Descripción
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 Métodos de la clase TextArea
Método
int getColumns()
int getRows()
void insert(String, int)
void append(String)
setEchoChar(char)
Descripción
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
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
Checkbox()
Checkbox(String)
Checkbox(String,Boolean)
Checkbox(String, CheckboxGroup,Boolean);
Descripción
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 Métodos de la clase Checkbox
Método
setLabel(String)
setState(boolean)
addItemListener(ItemListener)
Descripción
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
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
Crea un componente CheckBoxGroup.
Checkbox()
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
Choice();
Descripción
Crea un nuevo menu choice
7.9.2 Métodos de la clase Choice
Método
void add(String item);
int getSelectedIndex()
String getSelectedItem()
void remove(String)
void remove(int )
void addItemListener(ItemListener)
Descripción
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
import java.awt.*;
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);
pack();
setVisible(true);
}
}
public class PruebaAwtChoice {
public static void main(String args[]){
AwtChoice pagina=new AwtChoice();
pagina.forma();
}
El ejemplo produce la siguiente ventana:
}
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
List();
List(int lineas);
List(int Lineas, Boolean SelecciónMultiple);
Descripción
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 Métodos de la clase List
Además de los constructores la clase List proporciona los siguientes métodos:
Método
int getItemcount()
String getItem(int)
void add (String, int)
void add (String, int)
int getSelectedIndex()
int[] getSelectedIndexes()
String getSelectedItem()
String[] getSelectedItems()
void remove(String)
void remove(int )
void ActionListener(ActionListener)
Descripción
Devuelve el número de opciones de la Lista.
Devuelve el String asociado con el índice especificado.
Añade la opción en la posición índicada.
Añade la opción al final de la lista.
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.
Devuelve los índices de las opciones seleccionadas.
Regresa el String de la opción seleccionada. Regresa null si
no hay opción seleccionada o si se selecciona más de una.
Devuelve las cadenas de las opciones seleccionadas.
remueve de la lista el elemento indicado en la cadena.
remueve de la lista el elemento de la posición indicada.
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
MenuBar()
Descripción
Crea un nuevo componente MenuBar.
7.11.1.1Métodos de la clase MenuBar
Método
add(Menu)
int getMenuCount()
Descripción
Agrega el submenú al componente MenuBar.
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
Menu()
Menu(String)
Descripción
Crea un nuevo componente MenuBar.
El encabezado del menú será la cadena indicada en String.
7.11.2.2 Métodos de la clase Menu
Método
add(MenuItem)
add(String e);
addSeparator();
Descripción
Agrega la opción m al menú.
Agrega una opción con la etiqueta e al menú
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
MenuItem();
MenuItem(String );
MenuItem(String, MenuShortcut );
Descripción
Crea un elemento con etiqueta vacía y sin shortcut.
Crea un elemento de menú con la etiqueta especificada.
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
setEnabled(boolean b)
setLabel(String s)
Descripción
Establece si esta elemento puede o no ser seleccionado.
Cambia la etiqueta del elemento a la especificada en s.
ActionListener(ActionListener)
Agrega un oyente para eventos generados por este
elemento.
setShorcut(MenuShortcut)
Ing. Alma Leticia Palacios Guerrero
Asocia el elemento con el shortcut indicado.
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