Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ORIENTADO A OBJETOS
SWING
1
Universidad Nacional de Ingeniería 1
SWING
- Es un conjunto de componentes visuales que son parte del java.
- Son livianos respecto a sus antecesores llamados AWT
- Son independientes de la plataforma.
- El siguiente es un árbol de componentes usados en SWING
- SWING usa la infraestructura
de AWT
2
Universidad Nacional de Ingeniería 2
Componentes visuales
Componentes de alto nivel para Ventanas
JFrame JDialog JApplet
JWindow JInternalFrame
Contenedor de componentes
JPanel JScrollPane JToolBar
Componentes de menu
JMenuBar JMenu JCheckboxMenuItem
Componentes de texto
JTextField JTextPane JPasswordField
3
Universidad Nacional de Ingeniería 3
Componentes visuales
Controles atomicos
JLabel JButton JToggleButton
Componentes de complejos
JTable JTree JFileChooser JCheckBox JRadioButton JProgressBar
4
Universidad Nacional de Ingeniería 4
El primer programa com SWING
- Cada programa es SWING esta dividido en:
1. import de paquetes gráficos
2. Configurar el contenedor de alto nivel
3. Mostrar el contenedor
4. Asegurar consistencia del programa. (thread-safe)
1. import de paquetes gráficos
- La primera línea incorpora el SWING en el programa
import javax.swing.*;
- En la mayoría de programas se requiere importar además paquetes AWT.
- Estos paquetes se requieren porque SWING usa la infraestructura AWT.
- También usa los eventos AWT.
- Un evento es una acción sobre la aplicación. (presionar un botón, seleccionar un
menú...)
import java.awt.*;
import java.awt.event.*;
5
Universidad Nacional de Ingeniería 5
Configurar el contenedor de alto nivel
2. Configurar el contenedor de alto nivel...
- Cada programa debe tener al menos un contenedor de alto nivel
- Un contenedor de alto nivel maneja los eventos de sus componentes.
- Se cuenta con tres contenedores de alto nivel: JApplet, JFrame, JDialog.
- JFrame implementa la ventana principal de la aplicación.
- JFrame implementa los elementos por defecto de una ventana como bordes, titulo,
cambio de tamaño, botón para inconizar y cerrar. Estos elementos se llaman
decorators.
JFrame.setDefaultLookAndFeelDecorated(true);
6
Universidad Nacional de Ingeniería 6
Configurar el contenedor de alto nivel
- Los componentes de los contenedores heredan de javax.swing.Jcomponent
- El programa usa un JComponent llamado Jlabel que muestra un texto.
- Estas líneas crean el componente JLabel y lo agregan al contenedor JFrame
JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
7
Universidad Nacional de Ingeniería 7
El primer programa com SWING
3. Mostrar el contenedor.
- Para mostrar el contenedor se realiza lo siguiente:
frame.pack();
frame.setVisible(true);
- la primera línea coloca el tamaño de la ventana de acuerdo a sus componentes.
4. Asegurar la consistencia.
- Este código asegura que la ventana no se cuelgue antes de mostrarse en pantalla.
javax.swing.SwingUtilities.invokeLater
( new Runnable() {
public void run() { crearMostrarVentana(); }
}
);
8
Universidad Nacional de Ingeniería 8
TestSwing.java
import javax.swing.*;
public class TestSwing {
public static void main(String[] args) {
//Enviar una tarea al administrador de eventos
//para que cree y muestre la ventana
javax.swing.SwingUtilities.invokeLater
( new Runnable() { public void run() { crearMostrarVentana(); } } );
}
// Metodo para crear una ventana.
private static void crearMostrarVentana() {
//Asegurarse que contenga los decorators de una ventana.
JFrame.setDefaultLookAndFeelDecorated(true);
//Crear y configurar la ventana
JFrame frame = new JFrame("TestSwing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Agregar un label que muestre "Hola Mundo!"
JLabel label = new JLabel("Hola Mundo!");
frame.getContentPane().add(label);
//Mostrar la ventana
frame.pack();
frame.setVisible(true);
}
}
9
Universidad Nacional de Ingeniería 9
Una aplicacion en SWING
En la aplicación cada vez que se presione el botón, el contador de clicks se
incrementara.
La aplicación explicara lo siguiente:
1. Look and Feel
2. Configurar de botones y labels
3. Agregar componentes al contenedor
4. Agregar bordes a los componentes
5. Manejar los eventos.
10
Universidad Nacional de Ingeniería 10
Look and feel
public class SwingMain {
//Indicar que look and feel se usara en la aplicacion.
//Los valores de LOOKANDFEEL seran:
// null (por defecto), "Metal", "System", "Motif" y "GTK+"
final static String LOOKANDFEEL = "Metal";
private static void initLookAndFeel() {
// Clase java que administrara el LAF.
String claseLAF = null;
if (LOOKANDFEEL.equals("Metal")) {
// retorna la clase del LAF propio del Java
claseLAF = UIManager.getCrossPlatformLookAndFeelClassName();
}
// UIManager es el administrador LAF
// el metodo configura el LAF de la aplicación
UIManager.setLookAndFeel(lookAndFeel);
}
}
11
Universidad Nacional de Ingeniería 11
Configurar botones y labels
public class SwingContent {
private JButton boton;
private JLabel label;
public Component crearComponentes() {
//Creando los componentes de la ventana
label = new JLabel("Soy un label Swing!");
boton = new JButton("Soy un boton Swing!");
12
Universidad Nacional de Ingeniería 12
Agregar componentes al contenedor
public class SwingContent {
public Component crearComponentes() {
//Se crea un layout para los componentes
LayoutManager layout = new GridLayout(0, 1);
JPanel panel = new JPanel(layout);
//Se agrega los componentes al panel.
panel.add(boton);
panel.add(label);
}
}
13
Universidad Nacional de Ingeniería 13
Agregar bordes a los componentes
14
Universidad Nacional de Ingeniería 14
Manejar los eventos
public class SwingContent {
15
Universidad Nacional de Ingeniería 15
Eventos
a) Donde se manejaran los eventos?
Una clase que implementara el listener de eventos.
16
Universidad Nacional de Ingeniería 16
SWING II y III
17
Universidad Nacional de Ingeniería 17