Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modo de consola
-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)
Java
Java
Elementos bsicos
Componentes GUI (widgets) Objetos visuales del interfaz Un programa grfico es un conjunto de componentes anidados
Funcionalidad independiente de la plataforma Bsico y experimental Estndar hasta la versin 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
Java
Java
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
TextField
Window
Dialog
java.applet.
List Scrollbar
Applet FileDialog
Java
Java
Jerarqua de composicin
Contenedores de alto nivel Contenedores intermedios Componentes atmicos
Ventana (JFrame)
Panel raz
Panel de contenido
Panel (JPanel)
Etiqueta (JLabel)
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
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
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
A b s tractB u tton
J B 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
JC om p on en t
JTextC om p on en t
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
J P as s w ord F ield
J TextP an e
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
GridLayout(3,2)
Administradores de diseo
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
Mediante el mtodo paint(Graphics contexto) se determina que es lo que se debe mostrar en dicho contexto
Java
Java
31