Sunteți pe pagina 1din 11

JAVA SWING

La Java FoundationClasses(JFC) se compone del AWT, Swing y Java 2D. Juntas, proporcionan una interfaz de
usuario consistente para programas Java, tanto si el sistema de interfaz de usuario es Windows, Mac Oso Linux.
También suministra gestores de disposición básicos, un paquete de transferencia de datos para uso con el bloc de
notas, arrastrar y soltar y la interfaz para los dispositivos de entrada comunes como el ratón y el teclado.

Java Swing es un paquete que contiene un conjunto de librerías queprovee herramientas o facilidades para la
construcción deGUI'so Interfaces Graficas de Usuario (GraphicalUser Interface).Tiene las características de AWT
(AbstractWindowToolkit, Herramientas de Ventana Abstracta). Pero como conjunto de componentes de mayor nivel. Por esto, que
la mayoría de los programas Swing necesitan importar dos paquetes AWT:java.awt.*; (no siempre necesario) y java.awt.event.*;
y import.javax.swing.*;

A continuación se presentan la jerarquía de componentes en java Swing:

Figura 1a. Relaciones entre los componentes de swing (basados en AWT).

Se describen brevemente algunos de los elementos presentados en la figura 1b:

Todos los componentes heredan de javax.swing.JComponent


Component: superclase de todas las clases de interfaz gráfica.

Container: para agrupar componentes.

JComponent: superclase de todos los componentes de Swing que se dibujan directamente en los lienzos
(canvas). Sus subclases son los elementos básicos de la GUI.

Programación Orientada a Objetos Mónica E. García


Figura 1b.
1 Jerarquía de los componentes Swing

JFrame:: ventana que no está contenida en otras ventanas. Generalmente usada como base para la
aplicación principal.
JDialog: cuadro de diálogo.

Constructor: JDialog(Frame, String, boolean) donde

Frame es la ventana padre

String el título

boolean indica si es modal o no

Ejem: new JDialog(f, “ventana modal”, true);

JApplet:: subclase de Applet para crear applets tipo Swing (OJO:


(OJO: algunos navegadores ya no los
implementan).

JPanel:: contenedor invisible que mantiene componentes de interfaz y que se puede anidar, colocándose en
otros paneles o ventanas. También sirve de lienzo.

Graphics:: clase abstracta que proporciona contenidos g


gráficos
ráficos donde dibujar cadenas de texto, líneas y otras
formas sencillas.

Color:: color de los componentes gráficos.

Font:: aspecto de los caracteres.

FontMetrics:: clase abstracta para propiedades de las fuentes.

JLabel. Muestra texto


xto que NO puede editarse o iconos.

JTextField. Permite al usuario introducir datos mediante el teclado. También se puede utilizar para mostrar
texto que puede o no editarse.
Programación Orientada a Objetos Mónica
nica E. García
JButton. Activa un evento cuando se oprime mediante el ratón.

JCheckBox. Especifica una opción que puede seleccionarse o no.

JComboBox. Proporciona una lista desplegable de elementos, a partir de los cuales el usuario puede realizar
una selección, haciendo click en un elemento o posiblemente escribiendo en el cuadro.

JList . Proporciona una lista de elementos a partir de los cuales el usuario puede realizar una selección,
haciendo click en cualquier elemento de la lista. Pueden seleccionarse varios elementos.

JOptionPane

Contiene métodos de clase para crear distintas ventanas de mensajes (modales).

Métodos:

showConfirmDialog( …. ) : realiza una pregunta de confirmación como SI, NO, CANCELAR

showInputDialog( … ) : espera una entrada

showMessageDialog( … ) : informa de algo que ha ocurrido

showOptionDialog( … ) : unifica las tres anteriores

Argumentos de los métodos showXXXDialog( … )

Component padre puede ser null

Object mensaje usualmente un String

String titulo de la ventana

int tipoMensaje

DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, OK_CANCEL_OPTION

int tipoOpcion

ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE,


PLAIN_MESSAGE

Icon icono tiene uno por defecto

Object [ ] opciones

Object valorInicial

Ejemplo JOptionPane

import javax.swing.JOptionPane;

public class EjemploInputDialog {

public static void main(String[] args) {

String nombre = JOptionPane.showInputDialog("Ingresa tu nombre ");

JOptionPane.showMessageDialog(null, "Hola " + nombre);

Programación Orientada a Objetos Mónica E. García


} }

Categorías de clases:

Contenedores: JFrame, JApplet, JWindow, JDialog

Componentes intermedios: JPanel, JScrollPane

Componentes: JLabel, JButton, JTextField, JTextArea, etc.

Clases de soporte: Graphics, Color, Font, etc.

Los componentes incluyen atributos, métodos y eventos.

Figura 3. Diversos componentes.

Un programa que implemente una interfaz gráfico va a tener, generalmente, cuatro tipos de elementos:

1. Un contenedor de nivel superior: un marco (JFrame), un applet (JApplet), o bien objetos JDialog.
Estos contenedores no están dentro de otra ventana, son las ventanas principales.

Permiten crear ventanas para las aplicaciones y en ellas incluir otros componentes (paneles, botones,
cajas de texto, etc. , los cuales tienen comportamientos similares y a simple vista pueden parecer
iguales, pero son componentes distintos.

2. Componentes de la interfaz gráfica, como botones, campos de texto, etc, que se ubican en la ventana
principal o en contenedores.

3. Contenedores. Diseñados para contener a otros elementos de la interfaz. JPanel, JScrollPane son dos
contenedores. Estos contenedores a su vez son componentes.

4. Elementos de para la gestión de eventos


Programación Orientada a Objetos Mónica E. García
JFrame

Ejemplo:

import javax.swing.*;

class frame extends JFrame { //

publicframe(){ // Constructor

setTitle("¡¡ Hola !!"); // Método para poner un título a la ventana

setSize(300,200); // Método para poner tamaño

// Esta es la clase auxiliar, tiene el main de la aplicación

public class ejemploJFrame{

public static void main (String[] args){

JFrameframe = new frame(); // Se crea un objeto de tipo frame

frame.show(); // Los frames por defecto son “invisibles”,este


“invisibles”,este método los hace visibles

El método setDefaultCloseOperation que hace que el JFrame se comporte de forma diferente cuando se
cierra en función de los distintos valores que se le pueden pasar al método:

• DO_NOTHING_ON_CLOSE:: No hacer nada cuando se se cierra la ventana.


• HIDE_ON_CLOSE:: (por defecto) Esconde la ventana cuando el usuario la cierra, pero la deja
disponible.
• DISPOSE_ON_CLOSE:: Destruye la ventana cuando se cierra.
• EXIT_ON_CLOSE:: Finaliza la aplicación cuando se cierra la ventana.

Programación Orientada a Objetos Mónica


nica E. García
//-------------------Ejemplo 2 --------------------

import javax.swing.*;

public class EjemploGuia extends JFrame {

// declaración de constantes, variables y componentes

public EjemploGuia( ) {

super(“Mi primer ejemplo de GUI”);

// código para demás componentes, eventos, etc.

setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE); //Finaliza la aplicación cuando se cierra la ventana


}

public static void main(String [ ] args) {

EjemploGuia aplicacion = new EjemploGuia( ); } }

JLabel

Este control, es una simple etiqueta donde se coloca texto fijo.

Para añadir un control, además de importar su paquete, se deben hacer tres fases: primero, instanciar
el control, segundo colocarlo en una ubicación y tercero añadirlo al panel con el método add().

Ejemplo:

JLabel etiqueta = new JLabel("Aquí se incluye un texto");

etiqueta.setBounds(12,25,120,30); //renglon, columna, ancho, anto

this.getContentPane.add(etiqueta);

LayoutManager

Los componentes se agregan al contenedor con el método add( ).

El efecto de add( ) depende del esquema de colocación o disposición (layout) del contenedor
que se use.

Los layouts determinan el criterio con el que se van a distribuir los componentes dentro del
contenedor:
Programación Orientada a Objetos Mónica E. García
FlowLayout: distribuye los componentes uno al lado del otro en la parte superior del
container. Por defecto provee una alineación centrada, pero puede alinearse a la
izquierda o a la derecha.

BorderLayout: Divide el espacio del container en 5 regiones: NORTH, SOUTH, EAST,


WEST y CENTER. Admite un único componente por región.

GrindLayout: Divide el espacio del contenedor en una tabla de n filas por m columnas,
en donde sus celdas tienen el mismo tamaño.

GrindBagLayout: Divide el espacio del contenedor en una tabla donde cada componente
puede ocupar varias filas y columnas. Además, permite distribuir el espacio interno de
cada celda.

Para organizar el contenedor se utiliza el método setLayout( ).

public void setLayout(LayoutManager mgr) // tipo de disposición

Ejemplos:

setLayout(new BorderLayout( ) );

setLayout(new FlowLayout( ) );

setLayout(new GridLayout(3, 4) );

El layout manager elige la mejor posición y tamaño de cada componente de acuerdo al espacio
disponible.

Programación Orientada a Objetos Mónica E. García


Ejemplo:

import javax.swing.JFrame;

import java.awt.BorderLayout;

import javax.swing.JButton;

import javax.swing.JPanel;

class BorderLayoutPanel extends JPanel {

public BorderLayoutPanel() {

// se estable el layout

this.setLayout(new BorderLayout(5, 10));

init();

/* Se añaden los componentes */

private void init() {

JButton north = new JButton("NORTH");

JButton south = new JButton("SOUTH");

JButton east = new JButton("EAST");

JButton west = new JButton("WEST");

JButton center = new JButton("CENTER");

this.add(north, BorderLayout.NORTH);

this.add(south, BorderLayout.SOUTH);

this.add(east, BorderLayout.EAST);

this.add(west, BorderLayout.WEST);

this.add(center, BorderLayout.CENTER);

Programación Orientada a Objetos Mónica E. García


public class EjemploBorder {

private static void createAndShowGUI() {

JFrame frame = new JFrame("Ejemplos de uso de layouts");

BorderLayoutPanel panel = new BorderLayoutPanel();

frame.getContentPane().add(panel);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(400, 400);

frame.setVisible(true);

public static void main(String[] args) {

javax.swing.SwingUtilities.invokeLater(new Runnable() {

public void run() {

createAndShowGUI();

} });

Eventos en Java
• Todo componente de la GUI puede generar eventos
• Acciones del usuario sobre el componente
• Temporizaciones
• Cambios de estado, etc.

Modelo de Delegación
La responsabilidad de gestionar un evento que sucede en un componente (Fuente ) la tiene otro objeto
(Oyente)

Propagación de Eventos
El componente Fuente del evento invoca a un método del objeto Oyente, pasándole como un
argumento un objeto que almacena toda la información relativa al evento .

Programación Orientada a Objetos Mónica E. García


Figura 4. Eventos y componentes

Swing puede generar un variado set de eventos, en la siguiente tabla se resumen los más comunes con
sus respectivos "escuchadores".

Tabla 1. Ejemplos de eventos y sus escuchadores

Acción que activa un evento Tipo de escuchador


El usario hace un click, presiona Return
ActionListener
en un área de texto o selecciona un menú
El usuario escoje un frame (ventana principal) WindowListener
El usuario hace un click sobre una componente MouseListener
El usuario pasa el mouse sobre una componente MouseMotionListener
Una componente se hace visible ComponentListener
Una componente adquiere el foco del teclado FocusListener
Cambia la selección en una lista o tabla ListSelectionListener

ActionListener
Se usa para detectar y manejar eventos de acción, es decir, los que tienen lugar cuando se produce
una acción sobre un elemento del programa.

Un evento ActionEvent se produce:


• al pulsar un botón.
• al hacer doble clic en un elemento de lista.
• al pulsar ENTER en una caja de texto.
Programación Orientada a Objetos Mónica E. García
• al elegir un menú.

Los distintos elementos en una aplicación están supervisados por Listeners que detectan las
acciones que tienen lugar sobre el elemento vigilado. Cuando ActionListener detecta una acción se
genera un evento de acción (ActionEvent) en el elemento. Los ActionEvent invocan el método
actionPerformed(ActionEvent e) que realiza las acciones programadas ante ese evento.

Referencias:

Designing a Swing GUI in NetBeans IDE( Diseñando GUI Swing en el IDE NetBEans).
https://netbeans.org/kb/docs/java/quickstart-gui.html Fecha última de acceso: 03 de mayo de 2017.
API de Java- Paquete javax.swing https://docs.oracle.com/javase/7/docs/api/javax/swing/package-
summary.html Fecha última de acceso: 03 de mayo de 2017.

Repositorio de gráficos. http://www.oracle.com/technetwork/java/tbg-general-141722.html# Fecha última de


acceso: 15 de mayo de 2017.
Java FoundationClasses(JFC) http://www.oracle.com/technetwork/java/faqs-140150.html Fecha última de acceso:
03 de mayo de 2017.

Programación Orientada a Objetos Mónica E. García

S-ar putea să vă placă și