Este documento describe diferentes componentes gráficos en Java como AWT y Swing. Explica que AWT se basa en el sistema operativo subyacente mientras que Swing es multiplataforma. También describe clases comunes de Swing como JFrame, JLabel, JButton y cómo crear interfaces gráficas básicas con ellos.
3. AWT(Abstract Window Toolkit)
Tiene la ventaja de que las
aplicaciones se parecen mucho al
Sistemas Operativo sobe el que se
ejecuta.
Su principal desventaja que carga
el Sistema Operativo y además no
se pueden introducir cambios en
el aspecto de los componentes
Se encuentra en la librería
java.AWT
No tiene MVC
AWT Y SWING
Swing
Programado en código no nativo,
por lo que es mas portable. Estos
componentes son mas potentes
que los anteriores y se identifican
con una J antes del nombre.
Sus componentes se encuentran
en la librería javax.swing y son
todos subclases de la clase
Jcomponente.Swing
Soporta MVC
4. forma parte de Java Foundation
Classes (JFC) que se utiliza para
crear aplicaciones basadas en
ventanas. Está construido sobre
la API de AWT (Abstract
Windowing Toolkit) y
completamente escrito en Java.
El paquete javax.swing
proporciona clases para Java
swing API como JButton,
JTextField, JTextArea,
JRadioButton, JCheckbox,
JMenu, JColorChooser, etc.
¿Qué es SWING?
5. La componente básica que
requerimos cada vez que
implementamos una interfaz
visual con la libraría Swing es la
clase JFrame. Esta clase
encapsula una Ventana clásica de
cualquier sistema operativo con
entorno gráfico (Windows, OS X,
Linux etc.)
Esta clase se encuentra en el
paquete javax.swing para
importarla utilizamos la sintaxis:
import javax.swing.*;
Jerarquia Swing
6. Como vemos importamos la clase
JFrame del paquete javax.swing:
import javax.swing.JFrame;
Y luego en la main definimos y
creamos un objeto de la clase
JFrame (llamando luego a los
métodos setBounds, setVisible y
setDefaultCloseOperation)
El método setBounds ubica el
JFrame (la ventana) en la
columna 10, fila 20 con un ancho
de 400 píxeles y un alto de 300.
JFrame
import javax.swing.*;
public class Formulario extends JFrame{
public Formulario() {
setLayout(null);}
public static void main(String[] args) {
Formulario formulario1=new Formulario();
formulario1.setBounds(10,20,400,300);
formulario1.setVisible(true);
formulario1.setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE);}}
7. La segunda componente de la
librería swing llamada JLabel. La
clase JLabel nos permite mostrar
básicamente un texto.
Importamos el paquete
javax.swing donde se encuentran
definidas las clase JFrame y
JLabel: En el constructor creamos
Jlabel.
JLabel
import javax.swing.*;
public class Formulario extends JFrame {
private JLabel label1,label2;
public Formulario() {
setLayout(null);
label1=new JLabel("Sistema de Facturación.");
label1.setBounds(10,20,300,30);
add(label1);
public static void main(String[] args) {
Formulario formulario1=new Formulario();
formulario1.setBounds(0,0,300,200);
formulario1.setVisible(true);
formulario1.setDefaultCloseOperation(JFrame.EXIT_ON
_CLOSE);}}
8. El tercer control visual de uso
muy común es el que provee la
clase JButton. Este control visual
muestra un botón. Ahora
veremos la captura de eventos
con los controles visuales. Uno de
los eventos más comunes es
cuando hacemos clic sobre un
botón.
JButton
import java.awt.event.*;
public class Formulario extends JFrame implements
ActionListener{
JButton boton1;
public Formulario() {
setLayout(null);
boton1=new JButton("Finalizar");
boton1.setBounds(300,250,100,30);
add(boton1);
boton1.addActionListener(this);}
public void actionPerformed(ActionEvent e) {
if (e.getSource()==boton1) {
System.exit(0);
}
}
9. • Se quiere construir una aplicación que permita
registrar las notas de un curso. Un curso está
conformado por 12 estudiantes. De cada
estudiante solo se conoce su nota, que se
encuentra en formato decimal y debe ser un valor
entre 0 y 5. La aplicación debe permitir:
1. Registrar la nota de un estudiante.
2. Calcular el promedio de las notas de todos los
estudiantes.
3. Calcular la cantidad de estudiantes que están por
encima del promedio.
Ejemplo Interfaz 1
10. Así como podríamos decir que el
control JLabel remplaza a la
salida estándar System.out.print,
el control JTextField cumple la
función de la clase Scanner para
la entrada de datos.
El control JTextField permite al
operador del programa ingresar
una cadena de caracteres por
teclado.
JTextField
import javax.swing.*;
import java.awt.event.*;
public class Formulario extends JFrame implements
ActionListener{
private JTextField textfield1;
private JLabel label1;
public Formulario() {
setLayout(null);
label1=new JLabel("Usuario:");
label1.setBounds(10,10,100,30);
add(label1);
textfield1=new JTextField();
textfield1.setBounds(120,10,150,20);
add(textfield1);
}
11. El control de tipo JTextArea
permite ingresar múltiples líneas,
a diferencia del control de tipo
JTextField. Debemos crear un
objeto de la clase JScrollPane y
añadir en su interior el objeto de
la clase JTextArea.
JTextArea
import javax.swing.*;
public class Formulario extends JFrame{
private JTextField textfield1;
private JScrollPane scrollpane1;
private JTextArea textarea1;
public Formulario() {
setLayout(null);
textfield1=new JTextField();
textfield1.setBounds(10,10,200,30);
add(textfield1);
textarea1=new JTextArea();
scrollpane1=new JScrollPane(textarea1);
scrollpane1.setBounds(10,50,400,300);
add(scrollpane1);}
12. El control JComboBox permite
seleccionar un String de una lista.
Para inicializar los String que
contendrá el JComboBox
debemos llamar al método
addItem tantas veces como
elementos queremos cargar.
Debemos implementar la
interface ItemListener.
JComboBox
import javax.swing.*;
import java.awt.event.*;
public class Formulario extends JFrame implements
ItemListener{
private JComboBox<String> combo1;
public Formulario() {
setLayout(null);
combo1=new JComboBox<String>();
combo1.setBounds(10,10,80,20);
add(combo1);
combo1.addItem("rojo");
combo1.addItem("verde");
combo1.addItem("azul");
combo1.addItemListener(this);
}
13. Del empleado se maneja la siguiente información:
- Nombre, Apellido, Género (femenino o masculino), Fecha de
nacimiento, Foto, Fecha de ingreso a la empresa y Salario
básico. La aplicación permite: Edad del empleado, utilizando la
fecha de nacimiento del empleado. Antigüedad del empleado,
utilizando la fecha de ingreso del empleado. Prestaciones a las
que tiene derecho el empleado. Para este cálculo se debe usar
la siguiente fórmula: prestaciones= (antiguedad*salario)/12
Ejemplo Interfaz 2
14. El control JCheckBox permite
implementar un cuadro de
selección (básicamente un botón
de dos estados). El cambio de
estado del JCheckBox hay que
implementar la interface
ChangeListener que se encuentra
en el paquete:
JCheckBox
import javax.swing.*;
import javax.swing.event.*;
public class Formulario extends JFrame
implements ChangeListener{
private JCheckBox check1,check2,check3;
public Formulario() {
setLayout(null);
check1=new JCheckBox("Inglés");
check1.setBounds(10,10,150,30);
check1.addChangeListener(this);
add(check1);
}
15. Otro control visual muy común es
el JRadioButton que
normalmente se muestran un
conjunto de JRadioButton y
permiten la selección de solo uno
de ellos. Se los debe agrupar para
que actúen en conjunto.
JRadioButton
import javax.swing.*;
public class Formulario extends JFrame
implements ChangeListener{
private JRadioButton radio1;
private ButtonGroup bg;
public Formulario() {
setLayout(null);
bg=new ButtonGroup();
radio1=new JRadioButton("640*480");
radio1.setBounds(10,20,100,30);
radio1.addChangeListener(this);
add(radio1);
bg.add(radio1);}
16. Ahora veremos como crear un
menú de opciones y la captura de
eventos de los mismos. Cuando
necesitamos implementar un
menú requerimos de un objeto
de la clase JMenuBar, uno o más
objetos de la clase JMenu y por
último objetos de la clase
JMenuItem.
JMenuBar, JMenu, JMenuItem
import javax.swing.*;
public class Formulario extends JFrame implements
ActionListener{
private JMenuBar mb;
private JMenu menu1;
private JMenuItem mi1,mi2,mi3;
public Formulario() {
setLayout(null);
mb=new JMenuBar();
setJMenuBar(mb);
menu1=new JMenu("Opciones");
mb.add(menu1);
mi1=new JMenuItem("Rojo");
mi1.addActionListener(this);
menu1.add(mi1);
}
17. El cual nos permite construir una
tabla a partir de dos parámetros;
el primero de ellos: rowData es
un array bidimencional de
objetos que representa el
contenido de la tabla, y el
segundo: columnNames
representa los nombres de cada
columna, contenidos también en
un array que por lo general es un
Array.
JTable
public class SimpleTable1 extends JFrame
{
public SimpleTable1() {
super("Ejemplo 1");
Object[][] data = {
{"Mary", "Campione", "Esquiar", new Inte
ger(5), new Boolean(false)},};
String[] columnNames = {"Nombre", "Apel
lido", "Pasatiempo",
"Años de Practica", "Soltero(a)"};
final JTable table = new JTable(data, co
lumnNames);
table.setPreferredScrollableViewportSize
(new Dimension(500, 70));
JScrollPane scrollPane = new JScrollPane
(table);
getContentPane().add(scrollPane, BorderL
ayout.CENTER);
18. El JSpinner es un componente
java en el que se presenta una
caja de texto con dos flechitas en
el lado derecho, una hacia arriba
y la otra hacia abajo. En el campo
de texto se muestra un valor. Con
las flechitas arriba y abajo
podemos incrementar o
decrementar ese valor.
JSpinner
public PruebaJSpinner()
{
spinner = new JSpinner();
spinner.setValue(30);
spinner.addChangeListener(new Ch
angeListener() {
@Override
public void stateChanged(Cha
ngeEvent e) {
// Ponemos el valor del
JSpinner en el JTextField
tf.setText(spinner.getVa
lue().toString());
}
}
19. Se quiere crear un programa que permita administrar una tienda de
libros. La tienda tiene un catálogo de libros, que son los libros que
desea poner a la venta. La aplicación permite abastecer la tienda
con ejemplares de los libros del catálogo y venderlos.
Adicionalmente permite saber cuánto dinero se tiene en caja,
empezando con una inversión inicial de $1.000.000.
De cada libro se conoce:
- ISBN. Identificador del libro. No pueden existir dos libros en la
tienda con el mismo ISBN.
- Título. El nombre del libro.
- Precio de compra: Valor pagado por la compra de cada ejemplar en
la tienda.
- Precio de venta: Valor por el cual se vende cada ejemplar del libro.
- Cantidad actual. Cantidad actual de ejemplares que tiene la tienda.
Solo puede ser modificada mediante la venta o abastecimiento.
Ejemplo Interfaz 3
20. “Quizás la mayor fortaleza de un
enfoque de desarrollo orientado a
objetos es que ofrece un
mecanismo que captura un modelo
del mundo real".
Grady Booch