Introducción a JFC y a la programación de GUI en Java

Este tutorial trata los fundamentos de la programación de GUI (Graphical User Interface) y de las Java Foundation Classes o JFC en Java:

En nuestros tutoriales anteriores, hemos cubierto temas que van desde los fundamentos de los tipos de datos de Java, variables, toma de decisiones y construcciones de bucles, etc. hasta arrays, colecciones y métodos en Java.

También hemos discutido el concepto de multithreading y excepciones. Después, hemos aprendido el soporte OOPS de Java. Usando todos estos conceptos, podemos desarrollar aplicaciones de alto nivel en Java que son reutilizables y robustas, así como autocontenidas.

=> Compruebe aquí para ver la A-Z de los tutoriales de formación de Java.

En este tutorial, comenzaremos nuestra discusión sobre el desarrollo gráfico de aplicaciones en Java. Como todos los demás conceptos, Java proporciona numerosas clases gráficas reutilizables y APIS para que podamos desarrollar nuestra interfaz gráfica de usuario (GUI).

Qué es una interfaz gráfica de usuario en Java

La interfaz gráfica de usuario o simplemente llamada «GUI» es un término general utilizado en el mundo del software. Una GUI representa una aplicación que tiene una pantalla visual para el usuario con controles fáciles de usar. Una GUI generalmente consiste en componentes gráficos como ventanas, marcos, botones, etiquetas, etc.

Podemos utilizar estos componentes para interactuar con el sistema o incluso con el mundo exterior. Java proporciona muchas APIs y clases reutilizables con las que podemos desarrollar aplicaciones GUI. Uno de los kits más antiguos proporcionados por Java es ‘Abstract Windowing ToolKit» o AWT. Todas las nuevas APIs o componentes como Swing; JavaFX, etc. se basan en este AWT.

Los programas de consola que hemos escrito hasta ahora son igualmente importantes pero debemos saber que todas las últimas aplicaciones de escritorio modernas están habilitadas gráficamente. Esto significa que tienen una GUI lista para usar que facilita al usuario final el uso de la aplicación con un clic del ratón.

Nótese que escribir una GUI no es tan fácil como dibujar algunas formas o incluir imágenes. La GUI contiene una secuencia de actividades que además desencadenan unos eventos que a su vez ejecutan unas acciones al invocar un componente o parte de un componente como por ejemplo al pulsar un botón desencadenamos unas acciones.

Así que una aplicación GUI es un framework formado por componentes gráficos & los eventos que se pueden desencadenar sobre estos componentes y las acciones que se ejecutan como resultado del desencadenamiento de los eventos.

Los frameworks suelen proporcionar clases y componentes reutilizables precompilados que podemos arrastrar y soltar en el área de dibujo y luego asociar los eventos y acciones con estos componentes.

Java proporciona los siguientes frameworks principales.

Java proporciona los siguientes frameworks para la programación de GUI:

  1. Abstract Windowing Toolkit: Este es el framework más antiguo de Java y fue introducido por primera vez en el JDK 1.0. La mayoría de los componentes AWT están ahora obsoletos y son reemplazados por los componentes swing de Java.
  2. API Swing: Es un conjunto de bibliotecas gráficas desarrolladas sobre el framework AWT y forma parte de Java Foundation Classes (JFC). Swing tiene una arquitectura modular en la que podemos utilizar plug-and-play para los componentes.
  3. JavaFX: El último framework está disponible a partir de Java 8.

Hay varios frameworks gráficos de terceros como el Standard Widget Toolkit (SWT) de Eclipse o el Google Web Toolkit (GWT) utilizados en Android.

Java Foundation Classes (JFC)

Java proporciona un conjunto de características y funcionalidades para el desarrollo de interfaces gráficas de usuario o GUIs. Este conjunto de características se conoce como Java Foundation Classes o JFC.

Usando JFC podemos añadir una rica funcionalidad gráfica a las aplicaciones y también hacerlas más interactivas. JFC contiene un conjunto de componentes gráficos que pueden ser fácilmente insertados en nuestra aplicación y programados según nuestros requerimientos. Pero la programación de estos componentes suele requerir sólo unas pocas líneas de código.

JFC contiene clases de los paquetes java.awt y javax.swing. Aparte de estos, también contiene clases relacionadas con Java 3D, Java 2D, Java Accessibility, etc. JFC está en sintonía con el modelo de objetos y componentes de Java y por lo tanto es fácil de usar.

El siguiente diagrama resume varios componentes en JFC.

Como se muestra arriba, JFC contiene clases AWT así como Swing. Hablaremos de cada una de ellas a medida que avancemos con los tutoriales de Java AWT y Java Swing. JFC también proporciona varios métodos que podemos utilizar dentro de nuestra aplicación.

Algunos de los métodos más utilizados son:

Método Descripción
public void add(Component c) Agrega un componente al componente padre que invoca el método.
public void setSize(int width,int height) Ajusta el tamaño de un componente con una anchura y altura especificadas.
public void setLayout(LayoutManager m) Configura el gestor de diseño especificado para este componente.
public void setVisible(boolean b) Configura la visibilidad del componente según el valor booleano. Por defecto la visibilidad es falsa.

Ahora vamos a pasar a hablar de los componentes de la GUI a nivel general. Luego, en nuestros siguientes tutoriales, discutiremos los paquetes AWTy Swing y sus componentes específicamente.

Componentes de ventana

Sabemos que el contenedor padre de cualquier aplicación GUI es una Ventana que puede contener uno o más marcos.

Una GUI generalmente incluye elementos de interfaz de usuario o los elementos que se muestran como parte de la GUI en la aplicación.

Estos componentes de ventana son los siguientes:

  • Elementos informativos: Los elementos o componentes que nos proporcionan información como etiquetas, iconos, banners o diálogos de mensajes.
  • Controles de entrada: Campos de texto, botones, listas desplegables, casillas de verificación, botones de radio, etc. son los controles de entrada que nos permiten leer datos del usuario.
  • Componentes de navegación: Componentes como el menú, las barras laterales, las migas de pan, etc. nos ayudan a navegar por la aplicación.
  • Describamos ahora algunos componentes importantes en la GUI.

    Frame En Java

    Un frame es una ventana gráfica visible en la pantalla. Un frame puede ser visto como un componente, pero como forma una ventana física que podemos ver en la pantalla, se trata de forma diferente a los demás componentes. Un frame puede tener otros componentes gráficos como botones, campos de texto, etc. y también paneles.

    Los frames también tienen métodos que no son soportados por otros componentes. «java.awt.Frame» representa una clase en AWT mientras que JFrame es la clase contenida en el paquete Java Swing que representa un Frame.

    Así que cualquier aplicación GUI comenzará construyendo un objeto JFrame que forma la ventana principal. Una vez creado el objeto JFrame, podemos establecer su propiedad visible a true llamando a setVisible (‘true’). A continuación, podemos arrastrar y soltar los otros componentes en este marco.

    Todos los componentes de la interfaz gráfica de usuario, incluyendo los marcos, tienen algunas propiedades comunes, ya que forman parte de una jerarquía de herencia común mostrada anteriormente. Por lo tanto, podemos decir que hay un caso poderoso de código compartido en el paquete Java Swing.

    La siguiente figura muestra una ventana típica de marco en el editor de GUI.

    Como podemos ver en la figura anterior, la ventana más externa en el editor de diseño (marcada con una flecha roja más pequeña) es el marco. Dentro de este marco, tenemos varios otros componentes o componentes hijos del marco.

    Esto es evidente en el panel del lado izquierdo que muestra una estructura de árbol de los componentes. Como se marca con una flecha roja más grande, JFrame es el componente raíz y luego todos los demás componentes son sus componentes hijos.

    JPanel en Java

    El contenedor JPanel es una parte del paquete Swing en Java. JPanel almacena un grupo de componentes. JPanel organizó los componentes utilizando el diseño establecido por él. Varios layouts pueden ayudar a JPanel a organizar mejor los componentes.

    JPanel es considerado como un bloque de construcción básico para la disposición de componentes en un frame o dentro de otros paneles. Una aplicación GUI suele tener Frame como ventana principal y uno o más paneles dentro de ella para albergar y organizar varios componentes.

    La siguiente imagen muestra un ejemplo sencillo de un panel dentro de un frame.

    Como se muestra arriba, un contenedor Panel está incrustado en un contenedor de ventana Frame. Podemos tener uno o más paneles o incluso un panel dentro de un panel. Entonces podemos aplicar cualquier gestor de diseño al panel que organizará los componentes o elementos dentro del panel. El gestor de diseño por defecto para JPanel es «FlowLayout».

    Diseño de la interfaz de usuario en Java

    El contenedor Java utiliza un diseño automático de los componentes en la pantalla. Pero del tamaño y las posiciones de los componentes se encarga el ‘layout manager’. El gestor de diseño se establece para un contenedor en tiempo de diseño. También se puede cambiar dinámicamente.

    Los diseños más comunes utilizados en la GUI de Java son:

    #1) BorderLayout

    El diseño del borde divide el componente en 5 áreas como se muestra a continuación.

    De estas, 4 áreas, a saber, «Norte», «Sur», «Este» y «Oeste» son no redimensionables. El área «Centro» es redimensionable. Tenga en cuenta que cada área tiene un límite de un solo componente y los paneles se pueden utilizar para mantener múltiples componentes.

    #2) FlowLayout: Este diseño se utiliza para albergar múltiples componentes. Los componentes múltiples se organizan horizontalmente y se envuelven si el ancho del contenedor se agota. Además, los componentes se muestran en orden de izquierda a derecha.

    #3) BoxLayout: Utilizando el diseño de caja, los componentes se disponen vertical u horizontalmente. Esta disposición de la caja es independiente del tamaño del contenedor. Los componentes en el contenedor se establecen de manera que llenan el contenedor y tienen tamaños idénticos.

    Estos fueron algunos de los componentes importantes y comunes que tenemos en el desarrollo de GUI. En nuestros siguientes tutoriales sobre AWT y Swing, entraremos en los detalles de los demás componentes que proporcionan estos paquetes.

    Preguntas frecuentes

    Pregunta #1) ¿Qué es la programación de GUI?

    Respuesta: Los programas desarrollados utilizando componentes gráficos que interactúan con el ordenador utilizando el dispositivo señalador y está dirigido por eventos es decir, realiza algunas acciones cuando se desencadenan ciertos eventos, y se llama programación GUI.

    Una programación GUI utiliza frameworks GUI en los que podemos conectar y utilizar directamente componentes gráficos.

    Pregunta #2) ¿Qué GUI utilizar con Java?

    Respuesta: Java soporta algunos de los mejores frameworks que podemos utilizar para desarrollar aplicaciones GUI como se muestra a continuación:

    • JavaFX.
    • Swing GUI Java.
    • AWT: Abstract Windowing Toolkit.
    • SWT- Standard Widget Toolkit.
    • Apache Pivot.
    • SwingX.
    • JGoodies.
    • QtJambi.
    • P #3) ¿Cuáles son las ventajas de una GUI?

      Respuesta: El programa GUI hace que las aplicaciones sean interactivas, intuitivas y más fáciles de usar y aprender. Como proporcionan al usuario visuales gráficos, las acciones tienen más efecto y así obtenemos una respuesta visual inmediata sobre la aplicación.

      Pregunta #4) ¿Qué es la API JavaFX?

      Respuesta: JavaFX es la última biblioteca de Java escrita en el código nativo de Java y contiene clases e interfaces. JavaFX se puede utilizar para diseñar aplicaciones GUI en versiones de Java posteriores a Java 8.

      Pregunta #5) ¿Es Java bueno para GUI?

      Respuesta: Aunque Java tiene más herramientas para desarrollar aplicaciones GUI junto con el mejor soporte, no es tan rápido y eficiente como la biblioteca MFC de C++ que tiene casi todas las características para desarrollar aplicaciones GUI avanzadas.

      Conclusión

      En este tutorial, exploramos la programación de GUI en Java. Hemos introducido algunos de los conceptos importantes de la programación de GUI en Java y también hemos visto una visión general de los marcos de trabajo de GUI soportados por Java. Discutimos la visión general de la biblioteca JFC.

      => Consulta TODOS los tutoriales de Java aquí.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *