Lunes 15 de Noviembre

Interacción con el Usuario

Objetivos:

Temas:


Construcción de una interfaz gráfica

En el siguiente ejercicio se construirá una interfaz gráfica que tiene la siguiente forma:

Solución.


Eventos

Cuando un usuario interactúa con las componentes gráficas de una aplicación, gatilla eventos. Por ejemplo cuando el usuario:

En este curso solo nos preocuparemos de los eventos de acción. Estos eventos se gatillan cuando el usuario realiza la interacción fundamental por la que fue concebido un widget. Por ejemplo cuando el usuario:

acciona un bóton.

  • presiona la tecla ``enter'' para señalar el término de ingreso de un campo de texto.
  • selecciona dos veces (doble-click) un ítem en una lista.
  • selecciona un ítem en un menú. Las aplicaciones más simples sólo necesitan capturar los eventos de acción. El resto de los eventos sólo se capturan para adornar la interfaz. Por ejemplo:

    Los widgets provistos por la AWT saben capturar y responder la mayoría de de los eventos, con excepción de los eventos de acción porque estos tienen relación con la lógica de la aplicación (a veces se habla del negocio de la aplicación referiéndose a la funcionalidades que ella entrega).


    Captura de eventos de acción

    Para capturar eventos de acción, se procede de la siguiente forma. Supongamos que la interfaz gráfica consta de un botón, referenciado por la variable b. Cuando el usuario presiona ese botón se dice que gatilla el evento de acción asociado a ese botón. Supongamos entonces que la aplicación necesita responder a este evento, ejecutando un grupo de instrucciones I.


    Patrón de programación de una applicación con interfaz gráfica

        import java.awt.*;       // los widgets
        import java.awt.event.*; // los eventos
        import ...;              // otras bibliotecas
    
        class Gui extends Program {
          // la ventana
          Frame ventana= new Frame("título de la ventana");
          // todos los widgets
          TextArea area= new TextArea(5, 20);
          ...
          void run() {
            ventana.setLayout(new BorderLayout()); // asigna el layout
            panel.setLayout(new FlowLayout());
    
            // armamos el panel
            panel.add(texto);
            ...
    
            // armamos la ventana
            ventana.add("North", etiq);
            ...
    
            // Inscripcion para los eventos
            lista.addActionListener(new SeleccionLista());
            ...
    
            ventana.pack();
            ventana.show();
          }
    
          // clases para los eventos de acción
          ...
        }