entorno gráfico en java
DESCRIPTION
Introducción al paquete java.awt (Abstract Window Toolkit). Se presentan las clases y métodos de uso mas común. Se introducen los layoutsTRANSCRIPT
![Page 1: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/1.jpg)
Abstract Window Toolkit (AWT)
![Page 2: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/2.jpg)
La clase Component
• Todos los componentes que puedan visualizarse en pantalla son subclases de la clase Component.
![Page 3: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/3.jpg)
Jerarquía de la clase Component
java.lang.Object java.awt.Component java.awt.TextComponent java.awt.TextField java.awt.TextArea java.awt.Canvas java.awt.Choice java.awt.Checkbox java.awt.Container java.awt.Label java.awt.List java.awt.Scrollbar
![Page 4: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/4.jpg)
Contenedores
• Nos permite insertar componentes.• La clase awt.Container es la que nos permite
crear los contenedores.– class java.awt.Container
• class java.awt.Panel– class java.applet.Applet
• class java.awt.ScrollPane• class java awt.Window
– class java.awt.Dialog– class java.awt.Frame
![Page 5: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/5.jpg)
![Page 6: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/6.jpg)
Labels (Etiquetas)
• Son usadas para displayar información que no puede ser modificada.
• Constructores– Label ( )– Label (String s)– Label (String s, int alignment)
• Métodos– String getText( )– void setText (String s)– void setAlignment (int alignment)
• Label.LEFT, Label.CENTER, Label.RIGHT
Ver: MyLabel.html y MyLabel.java
![Page 7: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/7.jpg)
Push Buttons (Botones)
• Constructores:– Button()– Button(String label)
• Métodos:– void setLabel(String label): Setea la etiqueta del
botón con el nombre especificado.– String getLabel(): Obtiene la etiqueta del botón.– void addActionListener(ActionListener l): Agrega
un listener para detectar los eventos que se producen con un botón.
Ver Button1.java y Button1.html
![Page 8: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/8.jpg)
Choice
• Este componente puede presentar un usuario con una serie de alternativas de las cuales solo una selección puede hacerse.
• Constructor:– Choice(): Crea una nueva lista de selección.
• Métodos:– void add (String item): Agrega un item a la lista.– String getItem(int index): Retorna el string
correspondiente al índice.– void addItemListener(ItemListener l): Agrega un listener
para detectar los eventos que se producen componente Choice.
Ver ChoiceApplet.java y ChoiceApplet.html
![Page 9: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/9.jpg)
Algunos métodos de Choice
• int getItemCount(): Retorna el número de items en el Choice.
• String getItem(int index): Obtiene la representación String del correspondiente índice (Los índices comienzan en cero).
• int getSelectedIndex(): Retorna el índice del item seleccionado actualmente.
• String getSelectedItem(): Representación String del item seleccionado.
![Page 10: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/10.jpg)
List• Permiten escoger entre una o más opciones.• Constructores:
– List(): Crea una nueva lista– List(int rows): Crea lista con un número específico
de líneas.– List(int rows, boolean multipleMode): Crea una
nueva lista con cierto numero de filas y especifica si permite selección múltiple.
• Métodos:– void add(String item): agrega un item al final de la
lista.– void add(String item, int index): agrega un item en
cierto índice. • Ver ListApplet.java y ListApplet.html
![Page 11: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/11.jpg)
Algunos métodos de List
• int getItemCount(): Retorna el número de items en el List.
• void removeAll(): Remueve todos los items del List. • int getSelectedIndex(): Retorna el item
seleccionado (-1 si ningún item es seleccionado).• int[] getSelectedIndexes(): Arreglo de items
seleccionados. Si no hay items seleccionados, arreglo de longitud cero.
• String getSelectedItem(): Item seleccionado o null.
• String[]getSelectedItems(): Retorna arreglo de items seleccionados.
![Page 12: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/12.jpg)
TextField
• Cuadro de texto de una sola línea.• Constructores:
– TextField()– TextField(int columns): Construye un campo de
texto con un número específico de columnas.– TextField(String s): Construye un campo de
texto que displaya s.• Métodos:
– void setEchoChar(char c): Setea el caracter a ser displayado a medida que el usuario tipea.
– void setEditable(boolean b) //true==editable Especifica si un TextField es editable.
• Ver TextFieldApplet.java
![Page 13: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/13.jpg)
TextArea
• Constructores:– TextArea()– TextArea(String text): Construye una nueva área de
texto con un texto específico– TextArea(int rows, int columns): Construye un area de
texto con un número específico de filas y columnas.• Métodos:
– void append(String str): agrega un texto dado a un text area.
– void setColumns(int columns): Setea el número de columnas para esta área de texto.
– void setRows(int rows): Setea el número de filas para el área de texto.
• Ver TextAreaApplet.java
![Page 14: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/14.jpg)
Los administradores de diseño
Layout managers
![Page 15: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/15.jpg)
Layout Managers (Administradores de Diseño)
• Estos administradores, determinan el tamaño y posición del componente en el contenedor.
• Cuando el contenedor (container) necesita posicionar un componente, invoca al layout manager para que este lo haga.
![Page 16: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/16.jpg)
Ventajas
• Permiten representar de una manera ordenada los componentes en la pantalla.
• Cuando usamos los administradores no nos tenemos que preocupar, por ejemplo, de que se redimensione una ventana, ya que el propio administrador se encargará de reorganizar los componentes en el Container.
![Page 17: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/17.jpg)
Tipos de administradores (Layout Managers)
• FlowLayout
• BorderLayout
• GridLayout
• CardLayout
• GridBagLayout
![Page 18: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/18.jpg)
Cómo definirlo?
• Para utilizar un layout manager específico, se usa el método de la clase Container:– setLayout(AdministradorDeDiseño)
• Por ejemplo:– setLayout(new BorderLayout());
• Si no se especifica un layout manager se usa el default.– Para la clase Panel (superclase de la clase
Applet) el layout manager por default es: FlowLayout.
– Para la clase Frame, el layout manager por default es: BorderLayout.
![Page 19: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/19.jpg)
FlowLayout• Es el administrador de diseño por defecto de la
clase Panel, por ende de los applets.• Coloca los componentes de izquierda a derecha
en una fila, según se van insertando en el contenedor, y cuando llega al borde del contenedor los sigue insertando en la siguiente fila.
• Este administrador posee 3 constructores:– FlowLayout( )– FlowLayout(int alineamiento)
• El alineamiento puede tomar los siguientes valores: FlowLayout.LEFT, FlowLayout.RIGHT, o FlowLayout.CENTER
– FlowLayout(int alineamiento, int dist_h, int dist_v).
![Page 20: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/20.jpg)
Métodos asociados a FlowLayout
• El alineamiento por defecto es centrado.
Métodos DescripcióngetAlignment() Devuelve el tipo de alineación establecido.
setAlignment(int) Establece la alineación de los componentes. getHgap() Devuelve la distancia horizontal que existe entre un componente y otro.getVgap() Devuelve la distancia vertical que existe entre un componente y otro.setHgap(int) Establece la distancia horizontal entre componentes.setVgap(int) Establece la distancia vertical entre componentes.
![Page 21: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/21.jpg)
Ejemplo de FlowLayout
Ver también: EjemploFrame.java
![Page 22: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/22.jpg)
BorderLayout
• Administrador por defecto para los marcos (Frame) y cuadros de diálogo.
• Este administrador posee los siguientes constructores:– BorderLayout()– BorderLayout(int distancia_h, int distancia_v)
Ver Botones.java
![Page 23: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/23.jpg)
GridLayout• Este administrador divide el contenedor en
una cuadrícula, cada una de estas albergará un componente.
• Todas las casillas son del mismo tamaño.• Los componentes se agregan de izquierda a
derecha y de arriba hacia abajo.• Tiene 3 constructores:
– GridLayout()– GridLayout(int filas, int columnas)– GridLayout(int filas, int columnas, int
dist_h, int dist_v)Ver AdminGrid.java
![Page 24: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/24.jpg)
Ejercicio en Clase
![Page 25: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/25.jpg)
Tareas
• Lección cap 9 para el próximo viernes.
• Deber: Ejercicios del capítulo 9 para el próximo viernes.
![Page 26: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/26.jpg)
CardLayout
• Este administrador es el único que permite cambiar los componentes en pantalla en tiempo de ejecución.
• Su potencia radica en el uso de paneles.
• Podremos en un instante determinado visualizar uno de los paneles dejando los otros paneles sin visualizar.
![Page 27: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/27.jpg)
Pasos para usar un CardLayout
• Crear un panel que tenga por administrador a CardLayout.
• Crear los diferentes paneles que contendrá nuestra aplicación, insertando, claro está, los componentes necesarios en cada panel.
• Añadir mediante el método add() de la clase Container los paneles creados, al panel cuyo administrador es CardLayout.
• Usar los métodos next(), previous(), first() o show() pertenecientes a la clase CardLayout para poder visualizar el panel correspondiente.
![Page 28: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/28.jpg)
• Constructores CardLayout– CardLayout()– CardLayout(int distancia_h, int distancia_v)
• Métodos de CardLayout– first(Container padre) Visualiza el primer
contenedor.– last(Container padre) Visualiza el último
contenedor.– next(Container padre) Visualiza el siguiente
contenedor.– show(Container padre, String nombre) Visualiza
un contenedor específico.
![Page 29: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/29.jpg)
GridBagLayout
• Similar al GridLayout, con las diferencias siguientes:– Los componentes, pueden tener diferente
tamaño.– Los componentes pueden ocupar más de
una celda.– Los componentes se pueden agregar en
cualquier orden.
![Page 30: Entorno gráfico en Java](https://reader036.vdocuments.us/reader036/viewer/2022081720/5585da50d8b42a7c428b4b7a/html5/thumbnails/30.jpg)
Clase GridBagConstraints
• Esta clase especifica las restricciones de los componentes que serán colocados en un GridBagLayout.
• Las propiedades son:– anchor: Posición del componente dentro de la celda:
NORTH, NORTHWEST, CENTER, etc.– insets (int top, int left, int bottom, int right) : es el
margen que tienen los componentes dentro de la celda. – gridx: Columna en la cual se pone al componente.– gridy: Fila en la cual se pone al componente.– gridwidth: Número de columnas que un componente
ocupa (REMAINDER: todas las que restan).– gridheight: Número de filas que un componente ocupa.
(REMAINDER). (Ver GridBagDemo.java)