Java: Interfaz Gráfica de Usuario

Java: Interfaz Gráfica de Usuario

jueves, 13 de octubre de 2022

Java

Java es un lenguaje de programación ampliamente utilizado para codificar aplicaciones web. Ha sido una opción popular entre los desarrolladores durante más de dos décadas, con millones de aplicaciones Java en uso en la actualidad. Java es un lenguaje multiplataforma, orientado a objetos y centrado en la red que se puede utilizar como una plataforma en sí mismo. Es un lenguaje de programación rápido, seguro y fiable para codificar todo, desde aplicaciones móviles y software empresarial hasta aplicaciones de macrodatos y tecnologías del lado del servidor.




¿Por qué Java es una opción tan popular entre los desarrolladores de software de hoy en día?

Java es popular porque ha sido diseñado para facilitar su uso. Algunas razones por las que los desarrolladores siguen eligiendo Java sobre otros lenguajes de programación incluyen:

Recursos de aprendizaje de alta calidad

Java existe desde hace mucho tiempo, por lo que hay muchos recursos de aprendizaje disponibles para los nuevos programadores. La documentación detallada, los libros completos y los cursos ayudan a los desarrolladores a lo largo de la curva de aprendizaje. Además, los principiantes pueden comenzar a escribir código en Core Java antes de pasar a Advanced Java.

Funciones y bibliotecas incorporadas

Al usar Java, los desarrolladores no necesitan escribir cada nueva función desde cero. En cambio, Java proporciona un rico ecosistema de funciones y bibliotecas integradas para desarrollar una variedad de aplicaciones.

Apoyo comunitario activo

Java tiene muchos usuarios activos y una comunidad que puede ayudar a los desarrolladores cuando enfrentan desafíos de codificación. El software de la plataforma Java también se mantiene y actualiza periódicamente.

Herramientas de desarrollo de alta calidad

Java ofrece varias herramientas para admitir la edición automatizada, la depuración, las pruebas, la implementación y la administración de cambios. Estas herramientas hacen que la programación de Java sea más rápida y rentable.

Plataforma independiente

El código Java puede ejecutarse en cualquier plataforma subyacente, como Windows, Linux, iOS o Android, sin tener que volver a escribir. Esto lo hace especialmente poderoso en el entorno actual, donde queremos ejecutar aplicaciones en múltiples dispositivos.

Seguridad

Los usuarios pueden descargar código Java que no sea de confianza a través de una red y ejecutarlo en un entorno seguro en el que no puede causar ningún daño. El código que no es de confianza no puede infectar el sistema host con un virus ni puede leer o escribir archivos del disco duro. Los niveles de seguridad y las restricciones en Java también son altamente configurables.




¿Para qué se utiliza Java el lenguaje de programación?

Debido a que Java es un lenguaje versátil y de uso gratuito, crea software localizado y distribuido. Algunos usos comunes de Java incluyen: 

  1. Desarrollo de juegos: muchos juegos móviles, de ordenador y de video populares se crearon en Java. Incluso los juegos modernos que integran tecnología avanzada, como el machine learning o la realidad virtual, se crean con tecnología Java.
  2. Computación en la nube: Java a menudo se conoce como WORA: escribir una vez y ejecutar en cualquier lugar (por sus siglas en inglés “Write Once and Run Anywhere”), lo que lo hace perfecto para aplicaciones descentralizadas basadas en la nube. Los proveedores de la nube eligen el lenguaje Java para ejecutar programas en una amplia gama de plataformas subyacentes.
  3. Macrodatos: Java se usa para motores de procesamiento de datos que pueden trabajar con conjuntos de datos complejos y cantidades masivas de datos en tiempo real.
  4. Inteligencia artificial: Java es una fuente inagotable de bibliotecas de machine learning. Su estabilidad y velocidad lo hacen perfecto para el desarrollo de aplicaciones de inteligencia artificial como el procesamiento del lenguaje natural y el aprendizaje profundo.
  5. Internet de las cosas: Java se ha utilizado para programar sensores y hardware en dispositivos de borde que pueden conectarse de forma independiente a Internet.



Esquemas de distribución (Layouts en Java).

Para organizar los componentes de una interfaz de usuario, debemos utilizar un conjunto de clases llamadas gestores de distribución.

Los gestores ayudan a adaptar los componentes que se desean incorporar a un contenedor.
A continuación echaremos un vistazo a los principales gestores de distribución los veremos a continuación.

BorderLayout

Es el gestor de distribución por defecto del objeto contentPane para los marcos y ventanas. NO CONFUNDIR CON LOS PANELES JPanel

Divide un contenedor en cinco secciones: norte, sur, este, oeste y centro. Cada región solo puede contener un componente y es identificada por la constante correspondiente:
NORTH, SOUTH, EAST, WEST, CENTER.

Si el constructor no lleva argumentos, no existen huecos entre los componentes. Si lleva argumentos, éstos se corresponderían con los huecos horizontales y verticales respectivamente.

Los componentes se añaden mediante el método add que tiene como primer argumento el componente a añadir y como segundo la constante que indica a qué parte asignar los componentes.

BorderLayout

FlowLayout

Dispone los componentes en filas de izquierda a derecha, de forma similar a las líneas de texto en un párrafo. ES EL GESTOR DE DITRIBUCIÓN POR DEFECTO DE LA CLASE JPanel.
Por defecto, los componentes de cada fila se centrarán cuando se use el constructor FlowLayout() sin argumentos. Puede indicarse la alineación por medio del constructor mediante las variables de clase:

    • FlowLayout.LEFT
    • FlowLayout.RIGHT
    • FlowLayout.CENTER

También se puede cambiar mediante un constructor el espacio vertical y horizontal entre componentes (5px por defecto).

Muy útil para realizar un menú.

Veamos dos ejemplos partiendo del código visto con anterioridad. El primer caso no utilizaremos JPanel por lo tendremos que cambiar el layout por defecto de contentPane.

FlowLayout

La otra opción sería meter un panel (JPanel) que por defecto ya presenta y layout de tipo FlowLayout.

FlowLayout con Jpanel

BoxLayout

Para los componentes que van a los lados necesitamos algo similar al FlowLayout, pero que lo haga en vertical.

El BoxLayout es algo más elaborado que el FlowLayout en el sentido de que permite tanto orientación horizontal como vertical. Sin embargo, aunque también se puede hacer, no es tan evidente el hacer que los componentes se peguen arriba, abajo, a la izquierda o a la derecha.

El código para nuestra barra de botones vertical en el lado izquierdo quedaría así.

BoxLayout

El constructor del BoxLayout es más complejo que el del FlowLayout. Debemos pasarle el contenedor al que lo estamos añadiendo, es decir, el parámetro panel (en el ejemplo). También debemos pasarle si queremos orientación vertical BoxLayout.Y_AXIX u orientación horizontal BoxLayout.X_AXIS.

GridLayout

Ordena componentes en una cuadrícula de filas y columnas.

Si el constructor no recibe ningún argumento, se utiliza una columna por componente, en una sola fila.

Si el constructor recibe dos argumentos, el primero indicará el número de filas y el segundo el de columnas.

Existe la posibilidad de utilizar otro constructor en el que además de filas y columnas se indica la separación entre ellas.

GridLayout

Posicionamiento absoluto

Cuando se colocan los componentes en contenedores utilizando los controladores de posicionamiento, se compensarán automáticamente las diferencias que se puedan encontrar entre resoluciones de pantalla de distintas plataformas.

Los componentes también se pueden colocar utilizando posicionamiento absoluto, es decir, indicando la posición y el tamaño de un componente en coordenadas absolutas indicadas en pixeles.

En este caso, es más difícil conseguir que la apariencia de la interfaz de usuario sea uniforme en cualquier plataforma.

El posicionamiento absoluto se realiza con el método setBounds de la clase Component, el cual tiene los siguientes constructores:

    • setBounds(int x, int y, int width, int height), siendo x e y las coordenadas con respecto a la parte superior izquierda del contenedor.
    • setBounds(Rectangle r)

También se puede realizar el posicionamiento con setLocation (int x, int y). En este caso, puede ser necesario utilizar setSize (int ancho,int alto) para fijar el tamaño.

En cualquier caso, será necesario utilizar setLayout(null) para eliminar el gestor de distribución por defecto.



Java Server Pages

 La tecnología JavaServer Pages permite generar contenido Web dinámico como, por ejemplo, archivos HTML, DHTML, XHTML y XML, para incluirlos en una aplicación Web. Los archivos JSP son una forma de implementar contenido de páginas dinámico del lado del servidor. Los archivos JSP permiten a un servidor Web como, por ejemplo, Apache Tomcat, añadir contenido dinámicamente a las páginas HTML antes de enviarlas al navegador que las solicita.

Cuando se despliega un archivo JSP en un servidor Web que proporciona un motor de servlets, se procesa previamente en un servlet que se ejecuta en el servidor. Esto contrasta con JavaScript™ en el lado del cliente (dentro de códigos <SCRIPT>), que se ejecuta en un navegador. Una página JSP resulta ideal para tareas para tareas cuya ejecución es más adecuada en el servidor como, por ejemplo, acceder a bases de datos o llamar a beans de Enterprise Java™.

Puede crear y editar un archivo JSP en el editor HTML añadiendo su propio texto e imágenes utilizando HTML, códigos JSP o JavaScript, incluyendo código fuente Java dentro de los códigos de scriptlet. Normalmente, los archivos JSP tienen la extensión de archivo .jsp. Asimismo, la especificación JSP recomienda que los archivos de fragmento JSP tengan la extensión de archivo .jspf. Si no se sigue este convenio, el validador de JSP tratará los fragmentos JSP como archivos JSP autónomos normales y se pueden generar errores de compilación.







Java: Interfaz Gráfica de Usuario

 La interfaz de usuario es la parte del programa que permite al usuario interaccionar con él. La API de Java proporciona una biblioteca de clases para el desarrollo de Interfaces gráficas de usuario (en realidad son dos). La biblioteca proporciona un conjunto de herramientas para la construcción de interfaces gráficas que tienen una apariencia y se comportan de forma semejante en todas las plataformas en las que se ejecuten. La estructura básica de la biblioteca gira en torno a componentes y contenedores. Los contenedores contienen componentes y son componentes a su vez, de forma que los eventos pueden tratarse tanto en contenedores como en componentes. La API está constituida por clases, interfaces y derivaciones.