Académique Documents
Professionnel Documents
Culture Documents
Interfaz de Escritorio
SWING
INDICE
Introduccin
Swing o awt?
3.1.Biblioteca Swing
Componentes swing
Manejo de eventos
3.2.Contenedores
Estructura de una aplicacin
3.3.Administrador de Diseo
2
Introduccin
La meta original de diseo de la
biblioteca de interfaz grfico de usuario
(GUI) en Java 1.0 era permitir al
programador construir un GUI que
tuviera buen aspecto en todas las
plataformas. Esta meta no se logr. En
su lugar, el AWT de Java 1.0 produce un
GUI que tiene una apariencia
igualmente mediocre en todos los
sistemas. Adems, es restrictivo: solo se
pueden usar cuatro fuentes y no se
puede acceder a ninguno de los
elementos del GUI ms sofisticados que
existen en el sistema operativo.
Ejemplo utilizando
componentes AWT
Intro. (Cont.)
Adems, el AWT de Java 1.0 no es orientado a
objetos. El por qu de esto? El AWT original haba
sido conceptualizado, diseado e implementado en
un mes.
La situacin mejor con el modelo de eventos del
AWT de Java 1.1 que toma un enfoque orientado a
objetos mucho ms claro, junto con la adicin de
JavaBeans, un modelo de programacin basado en
componentes orientado hacia la creacin sencilla de
entornos de programacin visuales.
4
Intro. (Cont.)
Java 2 acaba esta transformacin alejndose del AWT de Java
1.0 esencialmente, reemplazando todo con las Java
Foundation Classes (JFC), cuya parte GUI se denomina
Swing. Se trata de un conjunto de JavaBeans fciles de usar,
y fciles de entender que pueden ser arrastrados y
depositados (adems de programados a mano) para crear un
GUI con el que un programador se encuentre finalmente
satisfecho.
5
Intro. (Cont.)
Una interfaz grfica con el usuario (GUI, graphical
user interface) presenta una interfaz de imgenes
con un programa. La interaccin entre usuario y
programa tiene lugar a travs de la GUI.
Las GUI se construyen a partir de componentes de
GUI. Un componente de GUI es un objeto visual con
el que el usuario puede interactuar a travs del ratn
o el teclado.
swing o awt?
La gran diferencia entre los componentes swing y los
componentes awt es que los primeros estn
implementados absolutamente con cdigo no nativo lo
que los hace independientes de la plataforma.
Adems proporcionan ms capacidades que los componentes
awt.
Los componentes swing se pueden identificar porque su
nombre empieza por J; por ejemplo, el componente de awt
Button tiene su correspondiente componente swing JButton.
8
swing o awt?
Swing simplemente extiende el AWT aadiendo un conjunto de
componentes, JComponents, y sus clases de soporte.
Hay un conjunto de componentes de Swing que son anlogos a
los de AWT, aunque Swing tambin proporciona cosas nuevas
como rboles y pestaas.
swing o awt?
Los componentes awt se localizan en el paquete java.awt y los
componentes swing en el paquete javax.swing
Se debe evitar usar los componentes de AWT como Menu,
ScrollPane y todos los componentes que heredan de las clases
Canvas y Panel de AWT junto con los componentes Swing, porque
estos se dibujarn sobre los componentes Swing.
10
11
13
15
Jerarqua Swing
Este diagrama
muestra un
subconjunto de
los componentes
SWING (en azul), y
como se
extienden
(heredan) de los
componentes
AWT (en amarillo)
16
Jerarqua Swing
Este diagrama muestra los paquetes y la extensin de
algunos componentes SWING y AWT.
17
Jerarqua Swing
Componentes y
contenedores ms
usados.
Componente
Container
Window
JComponent
Frame
JFrame
JPanel
JButton
JCheckBox
JComboBox
JLabel
JList
JRadioBox
JTextBox
JTextArea
JTextField
18
Componentes swing
Hay Componentes con entrada de tipo no
textual como:
Componentes swing
Hay Componentes con entrada de tipo
textual como:
campos de texto: JTextField
las reas de texto: JTextArea
las etiquetas: JLabel
Componentes swing
Incluso los Contenedores:
Panel
Window
Dialog
Frame
Componentes swing
Hay componentes swing para cada uno de los
elementos que usted ya ha visto, mas de una vez,
en una ventana de su sistema Windows, Linux u
otro.
Los ms comunes:
Etiquetas: Se implementa a partir de la clase
JLabel.
Botones: Se implementa a partir de la clase
JButton
Cajas de Texto: Se implementan a partir de la
clase JTextField las de una sola lnea de texto, y
a partir de JTextArea las de varias lneas.
22
Componentes swing
Casillas de verificacin: Se implementan a
partir de la clase JCheckBox
Botones de opcin: Se implementan a partir
de la clase JRadioButton
Listas. Se implementan a partir de la clase
JComboBox
Barras de desplazamiento: Se implementan a
partir de la clase JScrollBar
Cuadros de dilogo estndar: Se implementan
a partir de la clase JOptionPane
23
Componentes swing
Para usar con eficacia los componentes GUI, es
necesario conocer la jerarquia swing, sobre todo las
clases component y container.
Toda clase que hereda de la clase Component es un
componente.
Cualquier clase que hereda de la clase Container es un
contenedor. Un contenedor es un rea en la que
podemos colocar componentes.
24
Componentes swing
Algunos mtodos importantes de los componentes:
25
Rtulos
Un rtulo es un rea en la que se exhibe una sola
lnea de texto esttico (solo de lectura).
Los rtulos se crean con la clase JLabel que
hereda directamente de la clase JComponent.
Hay dos constructores de JLabel:
public JLabel()
Construye un rotulo vaco; no se exhibe texto.
public JLabel(String s)
//texto de rtulo
Construye un rtulo que exhibe el texto s.
26
Rtulos
Mtodos:
public String getText()
Devuelve el texto del rtulo.
public void setText( String s)
Fija el texto del rtulo.
Nota: Para que los rtulos y cualquier
componente sean visibles es necesario agregarse
a un contenedor con el mtodo add (agregar).
27
Botones
Un botn es un componente en el que el usuario
hace clic para disparar una accin especfica.
Tipos de botones: Botones para pulsar, botones
de opcin y casillas de verificacin.
Un botn para pulsar es un botn que dispara
una accin cuando se hace clic en l con el ratn.
28
Botones
Los botones para
pulsar se crean con la
clase JButton
Los botones o casillas
de verificacin se
crean con la clase
JCheckBox
Los botones de opcin
se crean con la clase
JRadioButton
29
32
Campos de Texto
Los campos de texto son reas de una sola lnea que
reciben entradas tecleadas por el usuario.
El usuario teclea datos en el campo de texto y oprime
la tecla Enter. El programa puede entonces usar los
datos.
Los campos de texto tambin pueden servir para
exhibir informacin.
Los campos de texto se crean con la clase JTextField
que hereda directamente de la clase JComponent.
33
Campos de Texto
Constructores:
public JTextField()
Construye un objeto JTextField.
public JTextField (int columns ) //nmero de columnas
Construye un objeto JTextField vaco con el nmero de columnas que
se especifican.
public JTextField( String s ) //texto exhibido en el campo de
texto
Construye un objeto JTextField que exhibe s.
public JTextField (
String s,
//texto exhibido en el campo de texto
int columns ) //numero de columnas
Construye un objeto JTextField que exhibe el nmero de columnas
especificado.
34
JComboBox
Generalmente se utiliza para elegir un objeto
dentro de una lista de valores (generalmente
String)
Solo se puede elegir una opcin a la vez.
Si es editable se puede escribir dentro de el.
35
JComboBox
Algunos mtodos importantes:
JComboBox( );
JComboBox( Object [ ] choices );//lista opciones
void addItem( Object item ); //adicionar item
Object getSelectedItem( );//obtener item selecc
int getSelectedIndex( );//retorna indice de opcin
seleccionada. Por default la primera tiene ndice 0
void setEditable( boolean edit ); //si es editable
void setSelectedIndex( int index );//el que aparece
elegido por default.
36
JCheckBox y JRadioButton
Identifican un estado apagado/falso si no esta
seleccionado y encendido/verdadero si esta
seleccionado.
Se puede elegir una opcin a la vez.
Algunos mtodos:
JCheckBox( );
JCheckBox( String theLabel ); texto del botn
JCheckBox( String theLabel, boolean state );
boolean isSelected( ); //si esta seleccionado
void setLabel( String theLabel ); setear rotulo
void setSelected( boolean state ); por default
37
JList
Muestra un conjunto de items de texto, grfico o
ambos.
Permite tres tipos de seleccin:
- Item nico
- Rango Simple
- Rango Mltiple
Ejemplo:
private String [] contenidos = {uno, dos, tres};
private JList lista = new JList(contenidos);
38
JPasswordField
Oculta los caracteres introducidos por el usuario.
Algunos mtodos:
setEchoChar('char') indica el carcter de mscara.
getPassword() recupera el password introducido.
39
Menu
Los mens van dentro de la ventana principal de la aplicacin.
Es posible asignarles un grfico (cono).
Pueden ser de tres tipos:
Drop-Down (JMenuBar)
Submenu (JMenu)
Contextuales (JPopupMenu)
40
Menu
Los men Drop-Down son los que saldrn ,
por ejemplo, hacer click en Archivo.
Los submenus son aquellos que salen como un
grupo de un elemento de men.
Los mens contextuales, (clase JPopupMenu)
son aplicables a la regin en la que est
localizado el puntero del ratn.
Son las clases JMenuBar, JMenu y JMenuItem.
41
JDialog
43
Clase JTabbedPane:
Es un contenedor que permite tener
varios componentes separados por
pestaas.
44
Manejo de eventos
Cuando el usuario hace clic sobre un botn de pulsacin
espera que ocurra algo. Ese algo hay que programarlo y para
poder hacerlo hay que saber como manejar ese evento.
El modelo se compone de 3 objetos:
46
48
50
51
52
53
java.util
java.awt
java.awt.event
54
Objeto Listener
Un objeto Listener es una instancia de una clase que
implementa la interface listener que incluye mtodos
para ser llamados cuando un evento es lanzado.
Las interfaces son las siguientes:
ActionListener
AdjustmentListener
KeyListener
ComponentListener
MouseListener
MouseMotionListener
ContainerListener
TextListener
55
El objeto Upanel es
pasado al mtodo
addActionListener()
del botn
addActionListener()
Upanel implementando
ActionListenerInterface
en el mtodo
actionPerformed()
Al presionar el botn,
se llama al
actionPerformed() del
Listener
58
60
61
62
63
66
67
Area de
trabajo
Propiedades
68
69
70
71
72
73
FlowLayout
GridLayout
GridBagLayout
BorderLayout
CardLayout
75
Border Layout
Coloca los componentes en los cuatro puntos cardinales, o
en el centro. El espacio del centro siempre obtiene el
mayor tamao.
Valores :
BorderLayout.NORTH (superior)
BorderLayout.SOUTH (inferior)
BorderLayout.EAST(derecho)
BorderLayout.WEST (izquierdo)
BorderLayout.CENTER (rellenar el centro hasta los
bordes de todos los dems componentes.
76
Grid Layout
Crea una rejilla de celdas iguales que se rellena de
izquierda a derecha, lnea a lnea. La rejilla la crea con el
nmero de columnas o filas que se le indique.
Constructores.
public GridLayout (int rows, int columns)
Construye un GridLayout con rows filas y columns columnas.
public GridLayout (int rows, int columns, int h, int v)
Construye un GridLayout con cada componente separado
horizontalmente por h pixeles y verticalmente por v
pixeles.
77
79
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).
addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).
addGap(0, 300, Short.MAX_VALUE)
);
pack();
80
}// </editor-fold>
private void
formWindowClosing(java.awt.event.WindowEvent evt)
{
// TODO: Agrege su codigo aqui:
cerrarVentana();
}
private void cerrarVentana()
{
System.exit(0);
}
81
/**
* @param args the command line arguments
*/
public static void main(String args[ ]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new AplicacionSwing().setVisible(true);
}
});
}
// Declaracin de variables -no modificar
// Fin de declaracin de variables
}
82
83
84
getContentPane().setBackground( Color.WHITE );
// declare a MouseListener for the window that
//displays a JPopupMenu when the popup trigger
//event occurs
addMouseListener(
new MouseAdapter() { // anonymous inner class
// handle mouse press event
public void mousePressed( MouseEvent event )
{
checkForTriggerEvent( event );
}
// handle mouse release event
public void mouseReleased( MouseEvent event )
{
checkForTriggerEvent( event );
}
85
86
87