Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Interfaz grafica en java, Diapositivas de Programación Java

Como generar interfaces para la aplicaciones

Tipo: Diapositivas

2018/2019

Subido el 03/12/2019

david-santos-bsh
david-santos-bsh 🇪🇸

9 documentos

1 / 31

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Construcción de Interficies
Gráficas en Java
Projecte de Programació (PROP)
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f

Vista previa parcial del texto

¡Descarga Interfaz grafica en java y más Diapositivas en PDF de Programación Java solo en Docsity!

Construcción de Interficies

Gráficas en Java

Projecte de Programació (PROP)

AWT – Abstract Window Toolkit

  • Parte de Java que gestiona las interficies gráficas
  • Resto de gestores de interficies se basan o relacionan con

AWT

  • Conceptos básicos:
    • Componentes: objetos y contenedores de la interficie
    • Layout Managers: regulan la distribución de componentes en contenedores
    • Eventos: transmitidos por el sistema operativo al AWT cuando el usuario realiza una acción

AWT: Componentes

  • Componentes contenedores:
    • Contenedores principales: No pueden estar dentro de otro contenedor - Frame: el contenedor más importante
  • Dialog: depende de un frame – dialog modal
    • Contenedores secundarios: Han de estar dentro de otro contenedor Pueden contener a otros contenedores secundarios - Panel (Applet es subclase de él), ScrollPane

AWT: Componentes

  • Reglas de funcionamiento:
    • Un componente sólo puede estar en un contenedor
    • Interficie funcional: hay que tener un contenedor principal, y hacerlo visible: miContainer.setVisible(true)
    • Añadir un componente a un contenedor: miContainer.add(miComponent)
    • Eliminar un componente de un contenedor: miContainer.remove(miComponent)
  • Una interficie funcional será un árbol n-ario:
    • Raíz: un Frame
    • Nodos intermedios: contenedores secundarios
    • Hojas: componentes primarios

AWT: Eventos

SO

AWT método gestor

(interface Listener)

  • Asociar a cada componente C un objeto (o varios) L ( interface

Listener).

  • L^ define un método^ M^ que recibe como parámetro un objeto subclase

de AWTEvent.

  • M^ se ejecuta cuando se produce el evento.
  • AWTEvent evento

AWT: Eventos public class MiClase() { // En alguna parte de la clase (al crearla, por ejemplo) public MiClase() { ... // Crea el listener del evento ListenerBoton miListenerBoton = new ListenerBoton(); // Asocia el listener al boton miBoton.addActionListener(miListenerBoton); ... } ... // La clase ListenerBoton es privada private class ListenerBoton implements ActionListener { public void actionPerformed (ActionEvent event) { System.exit(0); // CODIGO ASOCIADO AL EVENTO } } }

AWT: Eventos

  • De bajo nivel: operaciones elementales con ratón, teclado, contenedores y ventanas
  • De alto nivel: operaciones con un significado en el contexto gráfico
    • Clickar en un botón
    • Cambiar las barras de desplazamiento
    • Elegir un valor entre varios
    • Cambiar un texto

AWT: Componentes vs Eventos

AWT: Menús

  • Se pueden asociar a un contenedor principal en forma de

“barra de menú”. 3 clases:

  • MenuItem: opción que permite la ejecución de una acción
  • Menu: agrupa varios MenuItem u otros Menus
  • MenuBar: barra en el contenedor principal
  • Casos particulares:
    • CheckboxMenuItem: items que se pueden activar o no
    • PopupMenu: aparecen al hacer click con el botón derecho del ratón

AWT: Menús

  • Para tener una barra de menús funcional:
    • Crear los elementos de cada tipo MenuItem miMenuItem = new MenuItem(“Menu Option”); Menu miMenu = new Menu(“Menu Name”); MenuBar miMenuBar = new MenuBar();
    • Asociarlos entre sí (operación add) miMenu.add(miMenuItem); miMenuBar.add(miMenu);
    • Asociar la MenuBar al contenedor principal miFrame.setMenuBar(miMenuBar);
    • Asociar un ActionListener a cada MenuItem miMenuItem.addActionListener (new ActionListener() { public void actionPerformed(ActionEvent event) { … // Codigo asociado al evento } });

AWT: Event-dispatching Thread

  • En una aplicación basada en interficie gráfica, sólo el lanzamiento de la vistaPrincipal se hace desde el thread inicial
  • public static void main (String args[]) { vistaPrincipal = new VistaPrincipal(); ... // Inicializaciones vistaPrincipal.hacerVisible(); System.out.printl(“Seguramente no tiene sentido poner nada aquí…”); }
  • A partir de ese momento toman el control los Listeners asociados a los componentes gráficos: event-dispatching thread
  • Si se quiere que alguna tarea costosa se ejecute sin dejar la parte gráfica bloqueada, se puede crear uno o más working threads

AWT: Event-dispatching Thread

  • Si se quiere ejecutar todo desde el event-dispatching thread, se puede crear un objeto de la interficie Runnable y “encolarlo” en él: public static void main (String args[]) { java.awt.EventQueue.invokeLater ( new Runnable() { public void run() { vistaPrincipal = new VistaPrincipal(); ... // Inicializaciones vistaPrincipal.hacerVisible(); } } ); }

Swing vs AWT

  • Componentes primarios y contenedores secundarios heredan de

JComponent:

  • Componentes primarios: JButton, JMenuItem, JComboBox, JFileChooser, JLabel, JList, JMenuBar, JScrollBar, JTextArea, JTextField, …
  • Contenedores secundarios: Jpanel, JScrollPane, JOptionPane, …
  • Contenedores principales ( JFrame y JDialog) heredan de sus equivalentes en AWT

Swing vs AWT

  • El funcionamiento general es igual (con una J delante) Árbol n-ario en cuya raíz hay un JFrame, en los nodos intermedios contenedores secundarios y en las hojas componentes primarios
  • Se entrelazan ciertas clases. Por ejemplo, para construir ciertos diálogos es mejor no usar JDialog, sino:
    • JOptionPane para establecer diálogos rápidos (“Yes/No”, “Yes/No/Cancel”, …)
    • JFileChooser para seleccionar un fichero
    • JColorChooser para escoger un color
  • Los métodos de AWT son thread-safe, los de Swing en general no -> el event-dispatching thread debe ser el único thread válido para modificar los estados de las componentes gráficas una vez que están activas (es lo que ocurre por defecto)