viernes, 6 de mayo de 2011

Interfaces Gráficas

Programación Orientada a Objetos - Semana 13 - Reporte 12


Interfaces Gráficas en JAVA



Las GUI (Graphic User Interface) o Interfaz Gráfica de Usuario es una forma de hacer los dispositivos más accesibles a los usuarios en general.
Las interfaces gráficas son en realidad un componente o programa que corre en segundo plano en el sistema donde se ha implementado, su función es transformar cada una de las instrucciones, métodos, acciones o comandos en componentes visuales (haciendo uso de imagenes, pequeños iconos, efectos y demás).
Todo esto convierte un entorno de línea de comandos en un entorno visual más atractivo e intuitivo al usuario lo que es una invitación a utilizar nuestro sistema o aplicación

La necesidad de las interfaces gráficas surge como una consecuencia de la falta de conocimientos por parte de los usuarios sobre el manejo y uso de las CLI (Interfaces de Línea de Comandos) había la necesidad de masificar los sistemas, pero aprender cientos de instrucciones, sintaxis, parámetros y demás no era una buena solución.



Las Interfaces gráficas automatizan gran parte de este trabajo, ya que no es necesario aprender toda una instrucción textual, solo es necesario aprender la funcionalidad de un botón para lograr los resultados deseados.

Los sistemas operativos implementan diferentes gestores GUI o entornos de escritorio, solo por mencionar algunos:

  • Windows XP: LUNA
  • Windows Vista/Seven: AERO
  • MAC OS: AQUA
  • Linux: GNOME, UNITY, KCD

Java ofrece una serie de librerias que facilitan en gran medida la implementación interfaces gráficas.


java.awt(Abstract Windowing Toolkit)


Es el paquete original de herramientas GUI de Java. Las principales ventajas AWT son que viene incluída en todos los paquetes de tecnología Java, incluyendo implementaciones de Java en navegadores de Internet y es muy estable.

AWT es un conjunto de herramientas muy simples con pocos componentes GUI, administradores de diseño, y eventos.
Esto se debe a Sun Microsystems decidió utilizar un mínimo común denominador (LCD) para el enfoque de AWT.
Como resultado de ello, y por desgracia, algunos de los componentes de uso común, tales como tablas, árboles, barras de progreso, y otros, no son compatibles. Para las aplicaciones que necesitan más tipos de componentes, es necesario crearlas desde cero. Esta es una gran carga.

AWT ofrece tres tipos de componentes principales:


a) Básicos: Componentes básicos en cualquier GUI.

  • Button
  • CheckBox
  • Container
  • Panel
  • Window
  • Frame
  • Label
  • List
  • TextComponent
  • MenuComponent


b) Layouts: Sirven para acomodar los componentes de la GUI.

  • FlowLayout
  • GridLayout
  • BorderLayout
  • CardLayout
  • GridBagLayout


c) Eventos: Otorgan funcionalidades a cada uno de los componentes de la GUI.

  • KeyEvent
  • ActionEvent
  • MouseEvent
  • TextEvent



javax.swing


El paquete Swing es parte de la JFC (Java Foundation Classes) en la plataforma Java. La JFC provee facilidades para ayudar a la gente a construir GUIs.

Las componentes Swing se identifican porque pertenecen al paquete javax.swing.

Swing existe desde la JDK 1.1 (como un agregado). Antes de la existencia de Swing, las interfaces gráficas con el usuario se realizaban a través de AWT (Abstract Window Toolkit), de quien Swing hereda todo el manejo de eventos. Usualmente, para toda componente AWT existe una componente Swing que la reemplaza, por ejemplo, la clase Button de AWT es reemplazada por la clase JButton de Swing (el nombre de todas las componentes Swing comienza con "J").

Las componentes de Swing utilizan la infraestructura de AWT, incluyendo el modelo de eventos AWT, el cual rige cómo una componente reacciona a eventos tales como, eventos de teclado, mouse, etc... Es por esto, que la mayoría de los programas Swing necesitan importar dos paquetes AWT: java.awt.* y java.awt.event.*.

Ojo: Como regla, los programas no deben usar componenetes pesados de AWT junto a componentes Swing, ya que los componentes de AWT son siempre pintados sobre los de Swing. (Por componentes pesadas de AWT se entiende Menu, ScrollPane y todas las componentes que heredan de las clases Canvas y Panel de AWT)

Swing abarca componentes como botones, tablas, marcos, paneles, ventanas, etc...





APLICACIÓN AL PROYECTO


Es clave en mi proyecto desarrollar una interfaz gráfica amigable para el usuario. Mi intención es desarrollar algo parecido a la factura en físico, con un orden parecido.

En general, la ventana siempre estará compuesta por 2 paneles. El panel de barra de menú y el panel del área de trabajo




El panel de menú tendrá diferentes opciones las cuales se activaran dependiendo del área de trabajo. Para ello implementaré un JMenuBar. Si alguien por ahí sabe como implementarlo pues no dude en comentar.

El área de trabajo sera dinámica, ya que es la que cambiará con cada opción que se elija. Para ello se deberán utilizar de manera creativa los Layouts disponibles en java.awt.
Algunos paneles que me serán útiles son GridLayout, BorderLayout, FlowLayout y el dios GridBagLayout :).
Otros componentes necesarios para mi proyecto serán los básicos: JLabel, JButton, JTextField, JTextArea; asi como implementar de forma correcta el JTable


SALUDOS!! :)

REFERENCIAS




3 comentarios:

  1. Hola Juan Carlos, mira no se si te sirva o quieras realizarlo así, existen programas que te generan el código automáticamente, o sea tienes una ventanita de diseño donde tu vas arrastrando todo lo que quieras poner ya sean JPanel, JButton, JTextField, etc. Te genera todo el código solo tu solo tienes que acomodar a tu gusto y preferencia, esta herramienta también te permite conectar tu base de datos a tu programa, de echo yo ahorita tengo que desde ahí corro el programa y me pregunta los datos que requiere el formulario en mi caso es nombre, edad, sexo, etc del paciente. Cuando le pongo todos los datos se guardan en la base de datos. Aún no he logrado conectar esto a la interfaz gráfica es lo que estoy checando ahorita pero esta herramienta me sacó de muchos problemas.

    Claro que el programa te genera el código en cuanto a botones y cosas así pero se puede modificar y agregar código que quieras yo por ejemplo modifiqué muchas cosas y también agregue código por ejemplo para cambiar de ventanas y esas cosas. Alomejor te puede servir de algo :) en oracle viene un tutorial para crear interfaces gráficas con esta herramienta. Te dejo los links para descargarla y el tutorial.

    Netbeans
    http://dlc.sun.com.edgesuite.net/netbeans/6.9/rc/

    Tutorial.
    http://download.oracle.com/javase/tutorial/uiswing/learn/index.html


    Si tienes alguna duda me dices :) saludos!

    ResponderEliminar
  2. Suena interesante tu propuesta :)
    Y a estas alturas sería una excelente opción utilizar una herramienta que automatice el proceso de crear la interfaz. Pero por ahora seguiré intentando terminar la interfaz manualmente y utilizaré un Builder para terminar de pulirla.
    Muchas gracias Carmen, sin duda es útil el consejo :)

    ResponderEliminar
  3. Bien, 5. Y +1 para Carmen por su comentario, aunque yo prefiero el método de JC, ya que los builders suelen generar código bien feo con un chorro de páneles raros y con nombres de variables bien equis que no se entiende para nada. Pero para mockups, cuando no necesitas el código ni necesitas o quieres o tienes tiempo aprender cómo poner los componentes en su lugar, son excelentes.

    ResponderEliminar