Escolar Documentos
Profissional Documentos
Cultura Documentos
SWING
Objetivos
AL FINALIZAR ESTA LECCIN, DEBERA ESTAR CAPACITADO
PARA LO SIGUIENTE:
Swing (javax.swing):
Biblioteca de interfaz grfica de usuario ms potente
Creado sobre la jerarqua de clases de AWT
Funciones de Swing
Swing es un juego de componentes visuales que estn
JButton
JSlider
JRadioButton
JTextField
JTree
JCheckBox
Componentes sencillos
Marco
Recuadro de dilogo
Applet
Contenedores intermedios
Marco
Panel
Panel de desplazamiento
Componentes atmicos
Etiqueta
Elemento de texto
Botn
Panel
Componentes
atmicos
Contenedores Intermedios
Componentes Atmicos
Botones
Casillas de control
Recuadros combinados
Texto
Listas
Etiquetas
JFRAME
Estructura de un JFrame
Varios paneles dispuestos en capas
JPanel
JCheckBox
JTextField
JTextArea
JRadioButton
JComboBox
JList
Manejadores de diseo
Gestores de Diseo
FlowLayout.
BorderLayout.
GridLayout.
BoxLayout.
GridBagLayout.
Diseo de FlowLayout
Los componentes fluyen de izquierda a derecha,
dejando, por omisin, un espacio vertical y horizontal
de 5 pixels entre sus componentes.
PruebasFrame(){
setTitle("JFrame de pruebas");
//Para un FlowLayout
getContentPane().setLayout(new FlowLayout());
getContentPane().add(new JButton("Botn 1"));
getContentPane().add(new JButton("Botn 2"));
getContentPane().add(new JButton("Botn 3"));
getContentPane().add(new JButton("Botn 4"));
getContentPane().add(new JButton("Botn 5"));
setSize(300,200);
}
Diseo de BorderLayout
Diseo de BorderLayout
PruebasFrame(){
setTitle("JFrame de pruebas");
//Para un BorderLayout
getContentPane().setLayout(new BorderLayout());
getContentPane().add(new JButton("CENTER"), BorderLayout.CENTER);
getContentPane().add(new JButton("NORTH"), BorderLayout.NORTH);
getContentPane().add(new JButton("SOUTH"), BorderLayout.SOUTH);
getContentPane().add(new JButton("EAST"), BorderLayout.EAST);
getContentPane().add(new JButton("WEST"), BorderLayout.WEST);
setSize(300,200);
}
Diseo de GridLayout
Los componentes se colocan en una rejilla
de celdas iguales.
Se colocan de arriba hacia abajo y de
izquierda a derecha
PruebasFrame(){
setTitle("JFrame de pruebas");
//Para un GridLayout
getContentPane().setLayout(new
GridLayout(3,2,5,5));
getContentPane().add(new JButton("Botn
getContentPane().add(new JButton("Botn
getContentPane().add(new JButton("Botn
getContentPane().add(new JButton("Botn
getContentPane().add(new JButton("Botn
getContentPane().add(new JButton("Botn
setSize(300,200);
}
1"));
2"));
3"));
4"));
5"));
6"));
Diseo GridBag
Restricciones de GridBag
Agregado externo
Posicin de la celda
Relleno de
componente
Espacio de la celda
Media ponderada
de la expansin
Reglas de relleno
Fijacin
Diseo de un GridBagLayout
PruebasFrame(){
setTitle("JFrame de pruebas");
getContentPane().setLayout (new GridBagLayout());
JTextArea
areaTexto
=
new
JTextArea(Area
getContentPane().add (areaTexto);
texto);
GridBagConstraints (restricciones)
constrains.gridwidth = GridBagConstraints.REMAINDER;
Columna 0. No
necesita estirarse, no
JTextArea cajaTexto = new JTextArea("Area texto"); ponemos weightx
constraints.gridx = 0;
constraints.gridy = 0;
constraints.gridwidth = 2;
La fila 0 debe estirarse, hay
constraints.gridheight = 2;
que poner un weighty con
1.0
constraints.weighty = 1.0;
this.getContentPane().add (cajaTexto, constraints);
constraints.weighty = 0.0;
Para
hacer
que
un
componente
se
estire,
tenemos
el
atributo fill del GridBagConstraints. Este puede tomar los siguientes valores:
GridBagConstraints.NONE para que no se estire en ningn sentido, es la
opcin por defecto.
GridBagConstraints.VERTICAL para que se estire slo en vertical
GridBagConstraints.HORIZONTAL para que se estire slo en horizontal.
GridBagConstraints.BOTH para que se estire en ambas dimensiones
gbc.fill=GridBagConstraints.HORIZONTAL;
PruebasFrame(){
setTitle("JFrame de pruebas");
getContentPane().setLayout (new GridBagLayout());
JTextArea areaTexto = new JTextArea(Area texto);
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0; // El rea de texto empieza en la columna
cero.
constraints.gridy = 0; // El rea de texto empieza en la fila cero
constraints.gridwidth = 2; // El rea de texto ocupa dos
columnas.
constraints.gridheight = 2; // El rea de texto ocupa 2 filas.
getContentPane().add (areaTexto, constraints);
JButton boton1 = new JButton (Boton 1);
constraints.gridx = 2;
constraints.gridy = 0;
constraints.gridwidth = 1;
constraints.gridheight = 1;
this.getContentPane().add (boton1, constraints);
}
c.fill = GridBagConstraints.HORIZONTAL;
JButton button = new JButton("Button 1");
c.weightx = 0.5;
c.gridx = 0;
c.gridy = 0;
gridbag.setConstraints(button, c);
Diseo BoxLayout
Muestra los componentes en una nica fila o columna.
Su constructor necesita un argumento con el contenedor
a utilizar y la orientacin determinada por las constantes
BoxLayout.X_AXIS o BoxLayout.Y_AXIS.
BoxLayout(Container destino, int orientacin)
Diseo BoxLayout
PruebasFrame(){
setTitle("JFrame de pruebas");
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
panel.add(new JButton("Botn 1"));
panel.add(new JButton("Botn 2"));
panel.add(new JButton("Botn 3"));
panel.add(new JButton("Botn 4"));
panel.add(new JButton("Botn 5"));
panel.add(new JButton("Botn 6"));
setContentPane(panel);
setSize(300,200);
}
btn.setAlignmentX(float alignmentX);
lbl.setAlignmentY(float alignmentY);
lbl.setMaximumSize(new Dimension(int width, int height);
lbl.setMinimumSize(new Dimension(int width, int height);
lbl.setPreferredSize(new Dimension(int width, int height);
button1.setAlignmentY(Component.BOTTOM_ALIGNMENT);
button2.setAlignmentY(Component.BOTTOM_ALIGNMENT);
Como muestra la siguiente tabla, los botones, las etiquetas y los tems de men
Swing tienen un valor de alineamiento X por defecto distinto de todos los dems
componentes.
De forma similar, los botones, los tems de mens y las barras de herramientas
tienen distinto alineamiento Y que todos los dems componentes.
Componente Swing
Alineamiento X por
defecto
Alineamiento Y por
defecto
LEFT_ALIGNMENT
TOP_ALIGNMENT
Labels
LEFT_ALIGNMENT
CENTER_ALIGNMENT
Tool bars
CENTER_ALIGNMENT
TOP_ALIGNMENT
CENTER_ALIGNMENT
CENTER_ALIGNMENT
PruebasFrame(){
setTitle("JFrame de pruebas");
//Para un BoxLayout con un objeto Box
Box caja = Box.createVerticalBox();
caja.add(new JButton("Botn 1"));
caja.add(Box.createVerticalStrut(20));
caja.add(new JButton("Botn 2"));
caja.add(new JButton("Botn 3"));
caja.add(Box.createRigidArea(new Dimension(50,30)));
caja.add(new JButton("Botn 4"));
caja.add(Box.createGlue());
caja.add(new JButton("Botn 5"));
setContentPane(caja);
setSize(300,200);
}
Diseo de CardLayout
Permite implementar un rea que contiene distintos
componentes en distintos instantes de tiempo (naipes).
Normalmente controlado por una Combo Box, el estado de sta
determina cul grupo de componentes muestra el LM.
Se puede mostrar una componente aadida (identificada con el
nombre) mediante un mtodo de Cardlayout:
public void show( Container p, String Name);
Borde
null
Flujo vertical
GridBag
Cuadrcula