Está en la página 1de 8

Tipos de programas en Java

Aplicaciones Se pueden ejecutar directamente en un entorno Java Tipos

Modo de consola

Interfaces grficas de usuario (GUI)


Swing

-Interaccin mediante teclado -Interfaz basado en texto

-Ventanas graficas para entrada y salida de datos -Iconos -Dispositivos de entrada (e.g. ratn, teclado) -Interaccin directa Applets Pequeas aplicaciones que se ejecutan dentro de un navegador (o en el visualizador de applets - Appletviewer)

Aplicaciones con interfaz grfico (GUI)

Interfaz grfico Limitaciones por motivos de seguridad


2

Java

Java

Bibliotecas de componentes para GUI


Abstract Windowing Toolkit (AWT)

Elementos bsicos
Componentes GUI (widgets) Objetos visuales del interfaz Un programa grfico es un conjunto de componentes anidados

Look & Feel dependiente de la plataforma


sistemas

- La apariencia de ventanas, menes, etc. es distinta en Windows, Mac, Motif, y otros

Funcionalidad independiente de la plataforma Bsico y experimental Estndar hasta la versin JDK 1.1.5

ventanas, contenedores, mens, barras, botones, campos de texto, etc.

Swing / Java Foundation Classes ( desde JDK 1.1.5)

Look & Feel y funcionalidad independiente de la plataforma (Java Look & Feel)

-Los mens y controles son como los de las aplicaciones nativas -A las aplicaciones se les puede dar una apariencia en funcin de la plataforma
especfica

Administradores de diseo o disposicin (layout managers) Gestionan la organizacin de los componentes grficos de la interfaz Creacin de grficos y texto - Clase Graphics

Define fuentes, pinta textos, Para dibujo de lneas, figuras, coloreado,... Ratn Teclado
4

Nuevas funcionalidades

-API de accesibilidad para personas con necesidades especficas

Interactividad: manejo de eventos


Java

Java

Componentes del Swing


Contenedores Contienen otros componentes (o contenedores)
Estos componentes se tienen que aadir al contenedor y para ciertas operaciones se pueden tratar como un todo Mediante un gestor de diseo controlan la disposicin (layout) de estos componentes en la pantalla Ejemplo: JPanel, JFrame, JApplet

Jerarqua de componentes del AWT


Jerarqua de clases
Object

Graphics

Component

Button Canvas

Lienzo (clase Canvas) Superficie simple de dibujo Componentes de interfaz de usuario botones, listas, mens, casillas de verificacin, campos de texto, etc. Componentes de construccin de ventanas ventanas, marcos, barras de mens, cuadros de dilogo
Java 5 Java

TextComponent

Container

Checkbox Choice Panel Label

TextField

TextArea ScrollPane Frame

Window

Dialog

java.applet.

List Scrollbar

Applet FileDialog

Jerarqua de componentes de Swing (I)

Jerarqua de componentes de Swing (II)

Java

Java

Ejemplo - GUI simple con un JFrame


import javax.swing.*; public class GUISimple extends JFrame { public GUISimple (){ setSize(200, 100); setVisible(true); } public static void main(String args[]) { GUISimple ventana = new GUISimple(); ventana.setTitle("ventana tipo frame"); } }

Jerarqua de composicin
Contenedores de alto nivel Contenedores intermedios Componentes atmicos
Ventana (JFrame)

Panel raz

Panel de contenido

Panel (JPanel)

Etiqueta (JLabel)

Botn Hola (JButton)

Botn Adios (JButton)

Java

Java

10

Clases bsicas
java.awt.Component Esta clase abstracta define la funcionalidad bsica de todos los componentes grficos en Java java.awt.Container Clase abstracta que permite agrupar uno o varios componentes de forma que se puedan tratar como una unidad. Proporciona mtodos para aadir y eliminar componentes o para definir el tipo de presentacin que se realiza de los componentes en la pantalla (mediante layout Managers) javax.swing.JComponent Es la clase base de casi todos los componentes de interaccin que incorpora Swing excepto los contenedores de alto nivel (p.e. JFrame).
Java 11

Contenedores de alto nivel


javax.swing.JFrame Habitualmente la clase JFrame se emplea para crear la ventana principal de una aplicacin en Swing javax.swing.JDialog Genera ventanas secundarias de interaccin con el usuario

Cuadros de dilogo

Son modales: el usuario no puede interactuar con otra ventana hasta que no cierre la actual
C on tain er W in d ow

D ialog

F ram e

J W in d ow

J D ialog

JF ram e

Java

12

Cuadros de dilogo: JOptionPane


import javax.swing.*; //icono y boton OK predeterminados, se pone el ttulo JOptionPane.showMessageDialog(ventana, "Debe introducir datos en todos los campos", // mensaje "Error de entrada de datos", // ttulo JOptionPane.ERROR_MESSAGE); // icono // cuadro de opcin personalizado Object[] textoOpciones = {"Si adelante", "Ahora no", "No se que hacer"}; int opcion = JOptionPane.showOptionDialog(ventana, " Desea realizar la operacin ahora ?", "Mensaje de confirmacin", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, //utilizar el icono predeterminado textoOpciones, textoOpciones[0]); //botn predeterminado }
Java 13 Java

Peticin de datos con JOptionPane


import javax.swing.*; if (JOptionPane.showConfirmDialog(this ,panel // panel que se muestra dentro del cuadro de dilogo ,"Introduzca datos" ,JOptionPane.OK_CANCEL_OPTION ,JOptionPane.PLAIN_MESSAGE ) == JOptionPane.OK_OPTION) { String nombre = campoNombre.getText(); String apellidos = campoApellidos.getText(); int numPer=0; try { numPer= Integer.parseInt(campoNP.getText()); errorNumero = false; } catch (NumberFormatException nfe) { errorNumero = true; mostrarCuadroError(.....); }

14

JFileChooser
import javax.swing.*; // se crea el selector de ficheros JFileChooser selector = new JFileChooser(); // solo posibilidad de seleccionar directorios selector.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); // se muestra; se comprueba si el usuario acepta o cancela int opcion = selector.showOpenDialog(null); if (opcion == JFileChooser.APPROVE_OPTION) { //obtenemos el fichero o directorio seleccionado File archivo = selector.getSelectedFile(); System.out.println("archivo seleccionado: " + archivo); } else System.out.println("operacion cancelada ");

Contenedores intermedios
JPanel Agrupa a otros componentes No tiene presentacin grfica pero se le pueden aadir bordes o cambiar el color de fondo JScrollPane Incluye barras de desplazamiento

Java

15

Java

16

Panel con datos del usuario


JPanel panel = new JPanel(new GridLayout(4,2)); JLabel etiquetaNombre = new JLabel("Nombre: ", JLabel.RIGHT); JTextField campoNombre = new JTextField(); panel.add(etiquetaNombre); panel.add(campoNombre); JLabel etiquetaApellidos = new JLabel("Apellidos: ", JLabel.RIGHT); JTextField campoApellidos = new JTextField(); panel.add(etiquetaApellidos); panel.add(campoApellidos); JLabel etiquetaNP = new JLabel("Nmero Personal: ", JLabel.RIGHT); JTextField campoNP = new JTextField(); panel.add(etiquetaNP); panel.add(campoNP); ButtonGroup grupoBotones = new ButtonGroup(); JRadioButton maana = new JRadioButton("Grupo Maana", true); JRadioButton tarde = new JRadioButton("Grupo Tarde"); grupoBotones.add(maana); grupoBotones.add(tarde); panel.add(maana); panel.add(tarde); Panel que agrupa, tres etiquetas, tres campos de texto y dos botones de radio

Iconos, Etiquetas y Botones


Iconos Elementos grficos que se pueden aadir a los componentes Etiquetas Elementos para mostrar informacin Botones
JC om p on en t

A b s tractB u tton

J B u tton

JTog g leB u tton

J M en u Item

J R ad ioB u tton
17 Java

JC h eck B ox
18

Java

Mens

Ejemplo mens
import javax.swing.*; JMenuBar barraMenu = new JMenuBar(); JMenu menuOpciones = new JMenu("Men de opciones"); JMenuItem listar = new JMenuItem("Listar todos los alumnos"); menuOpciones.add(listar); // separador menuOpciones.add(new JSeparator()); JMenuItem listarTarde = new JMenuItem("Ver alumnos de la tarde"); menuOpciones.add(listarTarde); JMenuItem listarMaana = new JMenuItem("Ver alumnos de la maana"); menuOpciones.add(listarMaana); menuOpciones.add(new JSeparator()); JCheckBoxMenuItem verNumero = new JCheckBoxMenuItem("Mostrar Nmero"); menuOpciones.add(verNumero); barraMenu.add(menuOpciones); // establecer como barra de mens // en contenedor de alto nivel setJMenuBar(barraMenu);
19 Java 20

JCom ponent

JMenuBar

JPopupMenu

JAbstractButton

JSeparator

JMenu

JRadioButtonMenuItem

JCheckboxMenuItem

Java

Elementos de manejo de texto

Administrador de diseo (layout manager)


Cmo se colocan los componentes (usando el mtodo add) depende de la composicin (layout) Tipos de diseos o composiciones FlowLayout

JC om p on en t

JTextC om p on en t

- Por defecto, en paneles y applets BorderLayout


Los componentes se ponen de izquierda a derecha hasta llenar la lnea, y se pasa a la siguiente. Cada lnea se centra Se ponen los componentes en un lateral o en el centro se indica con una direccin:East, West, North, South, Center Se colocan los componentes en una rejilla rectangular (filas x cols) Se aaden en orden izquierda-derecha y arriba-abajo

J TextF ield

J TextA rea

J E d itorP an e

- Por defecto, en marcos GridLayout


J P as s w ord F ield

J TextP an e

Para poner un layout se utiliza el mtodo setLayout():


GridLayout nuevolayout = new GridLayout(3,2); setLayout(nuevolayout);

Java

21

Java

22

Administrador de diseo
contenedor
componente1 componente4 componente2 componente3

Otros administradores
GridBagLayout Similar al GridLayout pero mas verstil Presenta los componentes en una rejilla, pero:
Un componente puede ocupar ms de una fila y ms de una columna Las filas y las columnas pueden tener tamaos diferentes No se tiene que rellenar en un orden predeterminado

componente5 componente6

FlowLayout

Utiliza GridBagConstraints para especificar como deben colocarse, distribuirse, alinearse, etc., los componentes contenedor
componente1 componente3 componente5
Java

componente2 componente4 componente6


23 Java 24

GridLayout(3,2)

Administradores de diseo

Nuevos administradores de diseo en Swing


BoxLayout Organiza los componentes en una nica fila o columna

Por defecto el espacio libre se deja al final

Los elementos pueden tener distinto tamao y alineacin Normalmente se utiliza conjuntamente con la clase Box Permite crear componentes invisibles que ocupan un tamao fijo para mejorar la presentacin (reas rgidas y struts) Permite crear gomas extensibles o componentes invisibles que tambin se redimensionan cuando se redimensiona el contenedor

Java

25

Java

26

Ejemplo BoxLayout
public class PruebaBoxLayout extends JFrame { PruebaBoxLayout(){ JButton b1, b2, b3, b4, b5; b1 = new JButton("Botn 1");b2 = new JButton("Segundo Botn"); b3 = new JButton("3 Botn");b4 = new JButton("Bot. 4"); b5 = new JButton("Botn5"); JPanel panel = new JPanel(); // se asigna un BoxLayout vertical al panel panel.setLayout( new BoxLayout(panel, BoxLayout.Y_AXIS)); // se aaden los botones al panel con glue entre ellos panel.add(b1); panel.add(Box.createGlue()); panel.add(b2); panel.add(Box.createGlue()); panel.add(b3); panel.add(Box.createGlue()); panel.add(b4); panel.add(Box.createGlue()); panel.add(b5); getContentPane().add(panel); setTitle("BoxLayout"); pack(); setVisible(true); } public static void main(String args[]) { PruebaBoxLayout ventana = new PruebaBoxLayout();}}
Java 27 Java

Resultado BoxLayout

La captura de la izquierda es la situacin por defecto, en la central se introduce pegamento entre los botones tres y cuatro, y la captura de la derecha es con pegamento entre todos los botones.

28

La clase Graphics
Clase abstracta que es la base para los contextos grficos que permiten a una aplicacin dibujar los componentes independientemente del dispositivo de salida Un contexto grfico es un objeto que funciona junto con las ventanas para mostrar los objetos grficos Habitualmente no hay que crear ningn contexto grfico ya que esto es parte del framework de AWT

La clase Graphics
Proporciona mtodos para dibujar, rellenar, pintar imgenes, copiar reas y pegar grficos en pantalla drawLine x (100,0) drawRect y fillRect (0,0) drawPolygon drawPolyline drawOval y fillOval drawArc y fillArc y para escribir texto drawString y setFont (0,100) (width-1,height-1)
29 Java 30

Se obtiene mediante el mtodo getGraphics()

Mediante el mtodo paint(Graphics contexto) se determina que es lo que se debe mostrar en dicho contexto

Java

Ejemplo grfico con Canvas (AWT)


// canvas que se aade a un frame public class EjemploCanvas extends Canvas { String cad = "Escrito en canvas"; // este metodo se ejecuta automaticamente cuando Java necesita mostrar la ventana public void paint(Graphics g) { // obtener el color original Color colorOriginal = g.getColor(); // escribir texto grafico en la ventana y recuadrarlo g.drawString(cad, 40, 20); g.drawRect(35, 8, (cad.length()*7), 14); // dibujo de algunas lineas for (int i=20; i< 50; i= i+3) { if ((i % 2) == 0) g.setColor(Color.blue); else g.setColor(Color.red); g.drawLine(40, (90-i), 120, 25+i); } // dibujo y relleno de un valo g.drawOval(40, 95, 120, 20); g.fillOval(40, 95, 120, 20); g.setColor(colorOriginal);}}

Java

31

También podría gustarte