Java
Java
Java
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”.
• 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.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.
La siguiente figura muestra el árbol de herencia para todas las clases componentes del AWT
7.3.1.1 Constructores
Constructor Descripción
Frame(); Crea un Frame, inicialmente es invisible.
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.
import java.awt.*;
import java.awt.*;
class AwtFrame extends Frame{
public AwtFrame(String titulo){
setTitle(titulo);
setSize(200,400);
setLocation(3,3);
setVisible(true);
}
}
import java.awt.*;
class AwtFrameCambiaIcono extends Frame{
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.
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.
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 ");
}
}
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
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);
}
}}
import java.awt.*;
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);
}
}
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
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.
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.
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.
import java.awt.*;
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);
}
}
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
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.
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
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();
}
}
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 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
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);
}
}
7.4.1 Constructures
Constructor Descripción
Button(); Crea un boton sin texto
Button(String); Crea un botos con el texto especificado
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.
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);
}
}
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.
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.
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);
}
}
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.
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.
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();
}
}
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.
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.
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();
}
}
Constructor Descripción
Checkbox() Crea un componente CheckBoxGroup.
Método Descripción
getSelectedCheckbox() Regresa el componente que esté seleccionado.
setSelectedCheclkbox(Checkbox) Establece el componente seleccionado.
Constructor Descripción
Choice(); Crea un nuevo menu 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.
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();
}
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.
Método Descripción
add(Menu) Agrega el submenú al componente MenuBar.
int getMenuCount() Regresa el número de submenus en el componente
MenuBar.
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ú
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ú.
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
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.
import java.awt.*;
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");
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);
}
}
Pantallas generadas por el ejemplo 7.11.5 menú con separador y con CheckBoxmenuItem.