Publicado el 14 de Enero del 2017
1.882 visualizaciones desde el 14 de Enero del 2017
572,1 KB
50 paginas
Creado hace 15a (09/04/2010)
Lenguaje de Programación JAVA – 2º IINF y 2º ITIG
Lenguaje JAVA
9. AWT (Abstract Window Toolkit)
Índice
9.0 Introducción
9.1 Contenedores
9.2 Layouts
9.3 Componentes
9.4 Eventos
9.5 Swing
9.6 HowTo Swing
9.7 Ejemplo
9.8 Applets
David Contreras Bárcena
185
9. AWT (Abstract Window Toolkit)
AWT es el acrónimo del X Window Toolkit para Java.
Es una biblioteca de clases Java para el desarrollo de
Interfaces de Usuario Gráficas.
La versión del AWT que Sun proporcionó con el JDK se
desarrolló en sólo dos meses y es la parte más débil de todo
lo que representa Java como lenguaje.
Por este motivo se ha implementado el entorno gráfico
llamado Swing, desarrollado conjuntamente con Netscape.
Un entorno muy potente con todas las mejoras visuales que
hoy en día se ofrecen.
David Contreras Bárcena
186
David Contreras Bárcena - ETSI
Lenguaje de Programación JAVA – 2º IINF y 2º ITIG
Lenguaje JAVA
9. AWT (Abstract Window Toolkit)
Proporciona al programador todos los elementos necesarios
para desarrollar aplicaciones gráficas, como son ventanas,
botones, etc… y un sistema de eventos para gestionar las
acciones producidas por el usuario con cualquier elemento
de la aplicación.
David Contreras Bárcena
187
9. AWT – java.awt
Object
…
Component
Cursor
Event
FlowLayout
…
Button
Canvas
List
Container
Label
TextComponent
JComponent
Panel
Window
ScrollPane
TextField
TextArea
Dialog
Frame
JWindow
FileDialog
JDialog
JFrame
javax.swing
David Contreras Bárcena
188
David Contreras Bárcena - ETSI
Lenguaje de Programación JAVA – 2º IINF y 2º ITIG
Lenguaje JAVA
9. AWT – Estructura de una aplicación GUI
Objetos que debe contener toda aplicación GUI:
9.1 Contenedores (Containers): Elementos que se emplean para
colocar componentes en la ventana. La forma en la que se
distribuyan estos objetos en el container, dependerá del Layout
que se aplique al mismo. Un container que no posea un layout,
sólo podrá colocar un componente sobre sí mismo. Tipos de
container:
Ventanas: Elemento donde se muestra cualquier contenido visual.
Paneles: Una ventana podrá contener tantos paneles como le permita el
layout. Un panel, a su vez, deberá aplicar un layout para agregar
componentes.
David Contreras Bárcena
189
9. AWT – Estructura de una aplicación GUI
9.2 Layout Manager:
Indican la forma de organizar los componentes dentro del container.
Determinan el tamaño y posición de los componentes.
Pasos a dar:
1. Crear el container.
2. Aplicar el tipo de Layout Manager.
3. Agregar los componentes al container.
Tipos de Layout Manager más importantes (todos elllos heredan del
interface LayoutManager):
•
•
• GridLayout.
BoxLayout
•
•
CardLayout
FlowLayout
BorderLayout
David Contreras Bárcena
190
David Contreras Bárcena - ETSI
Lenguaje de Programación JAVA – 2º IINF y 2º ITIG
Lenguaje JAVA
9. AWT – Estructura de una aplicación GUI
9.3 Componentes (Components): Representan cada uno de los
controles que aparecen en toda ventana (botones, cajas de texto,
menús, ...)
David Contreras Bárcena
191
9.1 Contenedores - Ventanas
La clase Window permite crear ventanas cualquier tipo.
Subclases:
Frame: es la típica ventana de aplicación.
Dialog: es la ventana que utilizan los cuadros de diálogo.
Window: es una ventana sin marco ni barra de título. Utlizada para
las ventanas de presentación.
Métodos:
void setVisible (boolean visible)
void pack()
void setSize (int width, int height)
void setTitle (String title)
void setMenuBar (MenuBar mb)
void setResizable (boolean resizable)
void setState (int state)
David Contreras Bárcena
192
David Contreras Bárcena - ETSI
Lenguaje de Programación JAVA – 2º IINF y 2º ITIG
Lenguaje JAVA
9.1 Contenedores – Cuadros de Diálogo
Son ventanas transitorias para mostrar advertencias, errores,
información especifica, etc.
No tienen barra de menús.
Pueden ser de dos tipos:
JDialog: proporciona un dialogo general.
JFileChooser: dialogo especifico para escoger archivos para
guardar o abrir.
JOptionPane: manera fácil y rápida de generar diálogo
personalizados.
David Contreras Bárcena
193
9.1 Contenedores – Estructura de una aplicación GUI
Ejemplo de creación de una ventana:
public class MiFrame extends Frame
{
Button boton;
public static void main(String s[])
{
new MiFrame();
}
public MiFrame()
{
boton = new Button("Aceptar");
this.setLayout(new FlowLayout());
this.add(boton);
this.setSize(250,250);
this.setVisible(true);
}
}
David Contreras Bárcena
194
David Contreras Bárcena - ETSI
Lenguaje de Programación JAVA – 2º IINF y 2º ITIG
Lenguaje JAVA
9.1 Contenedores – Estructura de una aplicación GUI
Ejemplos:
COMPONENTE -> Button
CONTAINER –> Frame
COMPONENTE -> Button
DISTRIBUCION –> FlowLayout
CONTAINER –> Frame
COMPONENTE -> Button
DISTRIBUCION –> FlowLayout
CONTAINER –> Panel en la zona Sur
DISTRIBUCION –> BorderLayout
CONTAINER –> Frame
David Contreras Bárcena
195
9.1 Contenedores – Estructura de una aplicación GUI
Ejemplos:
public MiFrame()
{
boton = new Button("Aceptar");
this.add(boton);
this.setSize(250,250);
this.setVisible(true);
}
public MiFrame()
{
boton = new JButton("Aceptar");
this.setLayout(new FlowLayout());
this.add(boton);
this.setSize(250,250);
this.setVisible(true);
}
public MiFrame()
{
boton = new JButton("Aceptar");
Panel panel= new Panel(new FlowLayout());
panel.add(boton);
this.setLayout(new BorderLayout());
this.add(panel,BorderLayout.SOUTH);
this.setSize(250,250);
this.setVisible(true);
David Contreras Bárcena
}
196
David Contreras Bárcena - ETSI
Lenguaje de Programación JAVA – 2º IINF y 2º ITIG
Lenguaje JAVA
9.1 Contenedores - Container
Métodos importantes definidos en la clase Container:
Component add(Component comp)
void setLayout(LayoutManager mgr)
void remove(Component comp)
void remove(int index)
void removeAll()
void doLayout()
David Contreras Bárcena
197
9.2 LayoutManager
FlowLayout (java.awt)
Permite una distribución lineal de los componentes.
Crea nuevas líneas cuando así lo exige el ancho del container.
Components
Container
this.setLayout (new FlowLayout());
this.add(new Button(“Aceptar”));
this.add(...);
this.add(...);
this.add(...);
this.add(...);
David Contreras Bárcena
198
David Contreras Bárcena - ETSI
Lenguaje de Programación JAVA – 2º IINF y 2º ITIG
Lenguaje JAVA
9.2 LayoutManager
GridLayout (java.awt)
Permite una distribución en regilla o tabla.
Los componentes se situan en las celdas de forma secuencial de
arriba abajo y de izquierda a derecha.
No se puede direccionar la posición de los componentes sobre las
celdas.
El tamaño de las celdas es idéntico.
Container
Components
this.setLayout(new GridLayout(2,3));
this.add(new Button(“Aceptar”));
this.add(...);
this.add(...);
this.add(...);
David Contreras Bárcena
199
9.2 LayoutManager
BorderLayout (java.awt)
Proporciona cinco áreas para situar componentes.
La ausencia de una de ellas produce la extensión horizontal o
vertical de las contiguas.
norte
Container
oeste
centro
este
Components
sur
this.setLayout(new BorderLayout());
this.add(new Button(“Aceptar”), BorderLayout.NORTH);
this.add(..., BorderLayout.EAST);
this.add(..., BorderLayout.WEST);
this.add(..., BorderLayout.SOUTH);
this.add(..., BorderLayout.CENTER);
David Contreras Bárcena
200
David Contreras Bárcena - ETSI
Lenguaje de Programación JAVA – 2º IINF y 2º ITIG
Lenguaje JAVA
9.2 LayoutManager
CardLayout (java.awt)
Permite alternar el contenido de un container entre varios paneles
creados anteriormente.
El cambio se puede producir en tiempo de ejecución.
Cada panel deberá tener un identificador del tipo String.
this.setLayout(new CardLayout());
Panel panelA = new JPanel ();
panelA.add(....);
Panel panelB = new JPanel ();
panelB.add(....);
this.add(panelA, “A”);
this.add(panelB, “B”);
CardLayout cl = (CardLayout)this.getLayout();
cl.show(c, “B");
David Contreras Bárcena
201
9.2 LayoutManager
BoxLayout (javax.swing)
Permite visualizar los componentes alineados vertical u
horizontalmente.
Container
Components
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
Button boton1 = new Button(“Aceptar");
boton1.setAlignmentX(Component.CENTER_ALIGNMENT);
this.add(boton1);
this.add(...);
this.add(...);
this.add(...);
David Contreras Bárcena
202
David Contreras Bárcena - ETSI
Lenguaje de Programación JAVA – 2º IINF y 2º ITIG
Lenguaje JAVA
9.3 Componentes (Component)
Como superclase de todos los componentes java (AWT y
Swing), esta clase generaliza el comportamiento de todos
ellos.
Todos los componentes AWT heredan de Component,
mientras que los desarrollados en Swing lo hacen de
JComponent.
Component
Button
List
Container
Label
JComponent
David Contreras Bárcena
203
9.3 Componentes (Component)
Métodos importantes definidos en la clase Component:
void setEnabled(boolean b)
void setVisible(boolean b)
void requestFocus()
void setBounds(int x, int y, int width, int height)
void setLocation(int x, int y)
void setSize(int width, int height)
void setCursor(Cursor cursor)
void setFont(Font f)
void setBackground(Color c)
void setForeground(Color c)
void setName(String name)
void updateUI()
David Contreras Bárcena
204
David Contreras Bárcena - ETSI
Lenguaje de Programación JAVA – 2º IINF y 2º ITIG
Lenguaje JAVA
9.3 Componentes (Component)
Dado que las aplicaciones GUI desarrolladas hoy en día se
basan en componentes Swing, se verá un ejemplo mínimo
de componentes AWT.
Algunos de estos componentes se siguen empleando
aunque la gran mayoría han sido sustituidos por los nuevos
desarrollados en Swing.
Button: botones (JButton en Swing)
Label: etiquetas (JLabel en Swing)
TextField: campos de texto (JTextField en Swing)
Canvas: lienzo para dibujar
David Contreras Bárcena
205
9.3 Componentes - Button
Button(): crea un botón vacio sin etiqueta
Button(String): crea un botón con el string como etiqueta
String getLabel(): devuelve la etiqueta del botón.
void setLabel(String): pone
Comentarios de: Lenguaje de Programación JAVA - 9 AWT (0)
No hay comentarios