Está en la página 1de 33

Introduccin a Swing

JFrame, JPanel y Layout


Managers
Ing. Jorge Luis Chuc Lpez
Instituto Tecnolgico de Campeche
AWT y Swing
En JDK 1.0 se presenta la biblioteca AWT (Abstract
Windows Toolkit) para la creacin de interfaces
grficas del usuario (GUI, Graphics User Interfaces).
En JDK 2: se introduce JFC (Java Foundation Class),
que incluye
AWT
Swing
Aspecto configurable
Interfaz de accesibilidad
API para dibujo en 2D
Soporte Drag and Drop.
Diferencias entre AWT y
Swing
Caracterstica AWT Swing
JDKs soportados 1.0, 1.1 en adelante 1.2 en adelante
Utiliza cdigo nativo de S No
la plataforma en que se
utiliza
Compatibilidad Los componentes GUI Todos los componentes
de todas las plataformas se comportan igual en
no se comportan igual todas las plataformas
Aspecto segn la Distinto Distinto
plataforma
Proporciona un conjunto
ms extenso de
componentes
Se apoya en AWT
AWT y Swing
Una interfaz de usuario grfica comn
apoyada en AWT y Swing tiene los
siguientes elementos:
Un contenedor de primer nivel (JFrame,
JDialog, JApplet)
Componentes de la interfaz grfica
(etiquetas, campos de texto, botones,
mens, etc.)
Elementos para la gestin de eventos.
Creacin de un marco
Un marco (frame) en Java es una ventana de
nivel superior; una ventana que no est
contenida en otra.
La clase JFrame de Swing implementa los
marcos de nivel superior.
Los marcos instancias de JFrame son
ejemplos de contenedores
Un contenedor puede contener otros
componentes de la interfaz de usuario, como
botones y campos de texto.
Constructores de JFrame
Constructor Observaciones
JFrame() Constructor que crea un marco sin ttulo
JFrame(String titulo) Constructor que crea un marco con el ttulo
indicado.
Mtodos de JFrame
Mtodos Observaciones
setTitle(String titulo) Establece el ttulo de la ventana
setSize(int alto, int Establece las dimensiones de la ventana
ancho)
setLocation(int x, int y) Sita el marco en la posicin (x, y)
setBounds(int x, int y, Sita el marco en la posicin (x, y) con las
int ancho, int alto) dimensiones indicadas.
setResizable(boolean opc) Establece si el marco se puede redimensionar. Por
omisin es True
show() Muestra el marco y sus componentes
hide() Oculta el marco y sus componentes
dispose() Descarga todos los recursos del sistema necesarios
para crear el marco
pack() Muestra la ventana y coloca sus componentes.
Necesario si se realiza una redimensin de la
ventana o se modifican sus componentes.
setVisible(boolean opc) Establece si el marco es visible. setVisible(true) es
equivalente a show()
Creacin de una ventana usando
una instancia de JFrame
La clase JFrame
JFrame frame = new JFrame( );
frame.setSize( 300, 400 );
frame.setTitle( Un marco vaco );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setVisible( true );

import javax.swing.*;
Marcos de Ventanas
Creacin de un marco
Utilice la herencia para frames (marcos)
complejos para hacer los programas ms
fciles de entender.
Disee una subclase de JFrame
Almacene los componentes como variables de
atributos.
Inicialcelos en el constructor de tu subclase
Si el cdigo de inicializacin se hace
complejo, simplemente agregue algunos
mtodos auxiliares
Archivo MarcoSimple.java

01: import javax.swing.*;


02:
03: public class MarcoSimple extends Jframe {
04: public static final int LONG_FRAME = 300;
05: public static final int ALTURA_FRAME = 400;
06:
07: public MarcoSimple( ) {
08: frame.setSize( LONG_FRAME, ALTURA_FRAME );
09: frame.setTitle( Marco vaco );
10: }
11: }
Archivo
MarcoSimpleDemo.java

01: import javax.swing.*;


02:
03: public class MarcoSimpleDemo {
04: public static void main( String [] args ) {
05: MarcoSimple frame = new MarcoSimple( );
06: frame.setDefaultCloseOperation (Jframe.EXIT_ON_CLOSE );
07: frame.setVisible( true );
08: }
09: }
10:
Estructura de un JFrame
Root Pane.- Contenedor de peso ligero
sobre el que reside la estructura de un
Jframe
Layered Pane.- Agrega profundidad a
un contenedor Swing, permitiendo que
los componentes se sobrepongan uno
sobre otro, cuando sea necesario. Se
conoce tambin como orden Z.
Menu Bar.- Todos los contenedores de
nivel superior pueden opcionalmente
albergar una barra de men.
Content Pane.- En este contenedor
intermedio se colocan los
componentes. Por lo general es el
contenedor sobre el cual se trabaja.
Glass Pane.- Panel transparente que
est por encima de los elementos de
una estructura Jframe.
Agregando componentes a un
JFrame
JFrame es un contenedor de nivel superior
sobre el que podemos agregar componentes.
Los componentes se ubican sobre un panel
(JPanel) o directamente sobre el Content
Pane.
Para tener acceso al panel de contenido se
utiliza el mtodo getContentPane().
Sobre el contenedor obtenido se puede
utilizar el mtodo add() para agregar el
componente.
Visualizacin de informacin
en un panel
No se considera una buena prctica de
programacin visualizar informacin
directamente en el marco (frame).
Los marcos son contenedores para
componentes tales como barras de men,
barras de herramientas, etc.
Por lo general se utiliza para visualizar la
informacin otro componente denominado
panel.
Un panel se aade al marco.
Visualizacin de informacin
en un panel
Los pneles se implementan con la
clase JPanel de Swing.
Tienen dos propiedades:
Tienen una superficie sobre la que se
puede dibujar.
A su vez los pneles son contenedores, por
lo que pueden contener otros componentes
de interfaz de usuario.
Constructores de JPanel
Constructor Observaciones
JPanel() Constructor que crea un panel. De manera
predeterminada, el panel utiliza un
FlowLayout para distribuir sus componentes.
JPanel(LayoutManager Constructor que crea un panel y asigna el
layout) layout manager proporcionado como
parmetro para el panel recin creado.
Mtodos de JPanel
Mtodos Observaciones
void add(Component c) Agrega el componente especificado como parmetro al
panel.
void add(Component c, int Agrega el componente especificado en la posicin sealada
indice) por ndice dentro del contenedor. De manera
predeterminada, el primer componente tiene ndice 0, el
segundo tiene ndice 1, y as.
int getComponentCount(int Retorna el nmero de componentes en el panel. Retorna el
indice) componente sealado por el ndice proporcionado como
parmetro.
void remove(Component Elimina el componente especificado.
componente)
void remove(int indice) Elimina el componente especificado por el ndice
proporcionado como parmetro por el ndice.
void removeAll() Elimina todos los componentes del panel
void Establece el layout manager para el panel. El layout
setLayout(LayoutManager l) manager es el responsable de posicionar los componentes
del panel dentro de los lmites del panel, de acuerdo a sus
polticas.
LayoutManager getLayout() Obtiene el layout manager del panel.
Visualizacin de informacin
en un panel
La clase JPanel
JPanel panel = new JPanel( );

Se recomienda crear una clase derivada


de JPanel.
public class PanelBotones extends Jpanel {
. . .
}
Componentes JButton
Los componentes JButton nos permiten crear
botones de la interfaz de usuario:
JButton miBoton = new JButton( Cerrar );

Se recomienda agregar los componentes


JButton a un panel
public PanelBotones( ) {
Jbutton miBoton = Jbutton( Cerrar );
add( miBoton );
. . .
}
Administracin de composicin
Hasta ahora, se tiene control limitado
sobre la distribucin de componentes
Cuando se utiliz un panel, se
acomodaron los componentes de
izquierda a derecha
Los componentes de interfaz de
usuario son acomodados colocndolos
dentro de los contenedores
Administracin de
Composicin
Cada contenedor tiene un administrador de
composicin que dirige el acomodo de sus
componentes
Tres administradores de composicin tiles:
border layout
flow layout
grid layout
No son los nicos administradores de
composicin.
Administracin de composicin
De manera predeterminada, JPanel coloca
los componentes de izquierda a derecha e
inicia un nuevo rengln cuando se requiere
La distribucin del Panel se efectu con el
administrador de composicin FlowLayout
Pueden establecerse otros administradores
de composicin
panel.setLayout(new BorderLayout());
Border Layout
Border layout agrupa el contenedor en cinco
reas: center, north, west, south and east

Los componentes se expanden para llenar el espacio en el Border Layout


Border Layout
Es el administrador de composicin
predeterminado para un frame
Cuando se agrega un componente, especifica la
posicin de esta manera:
panel.add(component, BorderLayout.NORTH);

Expande cada componente para llenar el rea


asignada completa.
Si no se desea lo anterior, coloque cada
componente dentro de un panel
Grid Layout
Acomoda los componentes en una
rejilla con un nmero fijo de renglones
y columnas
Redimensiona cada componente para
que todos tengan el mismo tamao
Expande cada componente para llenar
el rea asignada completa
Grid Layout
Agrega los componente, rengln a
rengln, de izquierda a derecha:

JPanel numberPanel = new JPanel();


numberPanel.setLayout(new GridLayout(4, 3));
numberPanel.add(button7);
numberPanel.add(button8);
numberPanel.add(button9);
numberPanel.add(button4);
. . .
Grid Layout

El Grid Layout
Grid Bag Layout
Arreglo tabular de los componentes
Las columnas pueden tener tamaos
diferentes
Los componentes pueden abarcar
mltiples columnas
Muy complejo de utilizar
No se cubre en este curso
Grid Bag Layout
Afortunadamente, pueden crearse
distribuciones de apariencia aceptable
anidando panels
Dar a cada panel un administrador de
layout apropiado
Los panels no tienen bordes visibles
Utiliza tantos panels como se requieran
para organizar los componentes

También podría gustarte