Hasta el momento todas las aplicaciones Java realizadas en clase las habéis implementado de forma que su ejecución únicamente es posible desde la consola ya que carecen de un entorno gráfico con ventanas, formularios, menús de opciones, cajas de texto, botones, etc.
El objetivo de este nuevo tema va a ser el conseguir que seáis capaces de realizar aplicaciones Java con una interfaces gráfica bien diseñada y con los componentes (botones, cajas de texto, menús, etc.) que permitan la creación de un entorno gráfico de trabajo (GUI) muy adecuado y amable para las necesidades del usuario final de la aplicación.
Veamos, mediante ejemplos y explicaciones cómo llevar a buen puerto este objetivo:
¿Qué es Swing?
Java Swing es una herramienta de interfaz gráfica de usuario (GUI) ligera que incluye un amplio conjunto de widgets. Incluye un paquete que le permite crear componentes de GUI para sus aplicaciones Java, y es independiente de la plataforma.
La biblioteca Swing está construida sobre el conjunto de herramientas de widgets abstractos de Java ( AWT ): un kit de herramientas GUI más antiguo que depende de la plataforma. Puede utilizar los componentes de la GUI de Java como el botón, el cuadro de texto, etc. de la biblioteca y no tiene que crear los componentes desde cero.
En este tutorial, aprenderá-
- ¿Qué es Swing?
- ¿Qué es una clase de contenedor?
- Ejemplo de GUI
- Administrador de diseño
- BorderLayout
- FlowLayout
- GridBagLayout
Diagrama de jerarquía de la clase Java Swing
Todos los componentes en swing son JComponent que se pueden agregar a las clases de contenedor.
¿Qué es una clase de contenedor?
Las clases de contenedor son clases que pueden tener otros componentes. Entonces, para crear una GUI, necesitamos al menos un objeto contenedor. Hay 3 tipos de contenedores.
- Panel: es un contenedor puro y no es una ventana en sí misma. El único propósito de un Panel es organizar los componentes en una ventana.
- Marco: es una ventana en pleno funcionamiento con su título e iconos.
- Diálogo: se puede considerar como una ventana emergente que aparece cuando se debe mostrar un mensaje. No es una ventana completamente funcional como el Marco.
Ejemplo de GUI de Java
Ejemplo : Para aprender a diseñar GUI en Java
Paso 1) Copie el siguiente código en un editor
1 2 3 4 5 6 7 8 9 10 11 | import javax.swing.*; clase gui { public static void main(String args[]) { JFrame frame = new JFrame(«Mi primera GUI»); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 300); Botón JButton = nuevo JButton(«Presionar»); frame.getContentPane().add(botón); // Agrega el botón al panel de contenido del marco frame.setVisible(true); } } |
Paso 2) Guarde, compile y ejecute el código.
Paso 3) Ahora agreguemos un botón a nuestro marco. Copie el siguiente código en un editor
1 2 3 4 5 6 7 8 9 10 11 | import javax.swing.*; clase gui { public static void main(String args[]) { JFrame frame = new JFrame(«Mi primera GUI»); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 300); JButton button1 = new JButton(«Presionar»); frame.getContentPane().add(button1); frame.setVisible(true); } } |
Paso 4) Ejecuta el código. Obtendrás un gran botón
Paso 5) ¿Qué tal si agregas dos botones? Copie el siguiente código en un editor.
1 2 3 4 5 6 7 8 9 10 11 12 13 | import javax.swing.*; clase gui { public static void main(String args[]) { JFrame frame = new JFrame(«Mi primera GUI»); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 300); JButton button1 = new JButton(«Botón 1»); JButton button2 = new JButton(«Botón 2»); frame.getContentPane().add(button1); frame.getContentPane().add(button2); frame.setVisible(true); } } |
Paso 6) Guardar, compilar y ejecutar el programa.
Paso 7) Salida inesperada =? Los botones se superponen.
Java Layout Manger
El Administrador de diseño se usa para diseñar (o organizar) los componentes java de la GUI dentro de un contenedor. Hay muchos administradores de diseño, pero los más utilizados son:
Java BorderLayout
A BorderLayoutcoloca componentes en hasta cinco áreas: arriba, abajo, izquierda, derecha y centro. Es el administrador de diseño predeterminado para cada java JFrame
Java FlowLayout
FlowLayoutes el administrador de diseño predeterminado para cada JPanel. Simplemente establece los componentes en una sola fila, uno después del otro.
Java GridBagLayout
Es el más sofisticado de todos los diseños. Alinea los componentes colocándolos dentro de una grilla de celdas, permitiendo que los componentes abarquen más de una celda.
Paso 8) ¿Qué hay de la creación de un cuadro de chat como a continuación?
Intenta codificarte antes de mirar el programa a continuación.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | // Por lo general, necesitarás paquetes Swing y Awt // incluso si estás trabajando con solo swings. import javax.swing.*; import java.awt.*; clase gui { public static void main(String args[]) { // Creando el Marco JFrame frame = new JFrame(«Chat Frame»); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 400); // Creando MenuBar y agregando componentes JMenuBar mb = new JMenuBar(); JMenu m1 = new JMenu(«ARCHIVO»); JMenu m2 = new JMenu(«Ayuda»); mb.add(m1); mb.add(m2); JMenuItem m11 = new JMenuItem(«Abrir»); JMenuItem m22 = new JMenuItem(«Guardar como»); m1.add(m11); m1.add(m22); // Creando el panel en la parte inferior y agregando componentes JPanel panel = new JPanel(); // el panel no está visible en la salida JLabel label = new JLabel(«Introducir texto»); JTextField tf = new JTextField(10); // acepta hasta 10 caracteres JButton send = new JButton(«Enviar»); JButton reset = new JButton(«Restablecer»); panel.add(etiqueta); // Componentes agregados usando Flow Layout panel.add(etiqueta); // Componentes agregados usando Flow Layout panel.add(tf); panel.add(enviar); panel.add(restablecer); // Área de texto en el centro JTextArea ta = new JTextArea(); // Agregar componentes al marco. frame.getContentPane().add(BorderLayout.SOUTH, panel); frame.getContentPane().add(BorderLayout.NORTH, mb); frame.getContentPane().add(BorderLayout.CENTER, ta); frame.setVisible(true); } } |
¿Qué es Swing?
Java Swing es una herramienta de interfaz gráfica de usuario (GUI) ligera que incluye un amplio conjunto de widgets. Incluye paquete que le permite crear componentes de GUI para sus aplicaciones Java, y es independiente de la plataforma.
La biblioteca Swing está construida sobre el conjunto de herramientas de widgets abstractos de Java ( AWT ), un kit de herramientas GUI más antiguo que depende de la plataforma. Puede utilizar los componentes de la GUI de Java como el botón, el cuadro de texto, etc. de la biblioteca y no tiene que crear los componentes desde cero.
En este tutorial, aprenderá-
- ¿Qué es Swing?
- ¿Qué es una clase de contenedor?
- Ejemplo de GUI
- Administrador de diseño
- BorderLayout
- FlowLayout
- GridBagLayout
Diagrama de jerarquía de la clase Java Swing
Todos los componentes en swing son JComponent que se pueden agregar a las clases de contenedor.
¿Qué es una clase de contenedor?
Las clases de contenedor son clases que pueden tener otros componentes. Entonces, para crear una GUI, necesitamos al menos un objeto contenedor. Hay 3 tipos de contenedores.
- Panel: es un contenedor puro y no es una ventana en sí misma. El único propósito de un Panel es organizar los componentes en una ventana.
- Marco: es una ventana en pleno funcionamiento con su título e iconos.
- Diálogo: se puede considerar como una ventana emergente que aparece cuando se debe mostrar un mensaje. No es una ventana completamente funcional como el Marco.
Ejemplo de GUI de Java
Ejemplo : Para aprender a diseñar GUI en Java
Paso 1) Copie el siguiente código en un editor
1 2 3 4 5 6 7 8 9 10 11 | import javax.swing.*; clase gui { public static void main(String args[]) { JFrame frame = new JFrame(«Mi primera GUI»); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 300); Botón JButton = nuevo JButton(«Presionar»); frame.getContentPane().add(botón); // Agrega el botón al panel de contenido del marco frame.setVisible(true); } } |
Paso 2) Guarde, compile y ejecute el código.
Paso 3) Ahora agreguemos un botón a nuestro marco. Copie el siguiente código en un editor
1 2 3 4 5 6 7 8 9 10 11 | import javax.swing.*; clase gui { public static void main(String args[]) { JFrame frame = new JFrame(«Mi primera GUI»); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 300); JButton button1 = new JButton(«Presionar»); frame.getContentPane().add(button1); frame.setVisible(true); } } |
Paso 4) Ejecuta el código. Obtendrás un gran botón
Paso 5) ¿Qué tal si agregas dos botones? Copie el siguiente código en un editor.
1 2 3 4 5 6 7 8 9 10 11 12 13 | import javax.swing.*; clase gui { public static void main(String args[]) { JFrame frame = new JFrame(«Mi primera GUI»); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 300); JButton button1 = new JButton(«Botón 1»); JButton button2 = new JButton(«Botón 2»); frame.getContentPane().add(button1); frame.getContentPane().add(button2); frame.setVisible(true); } } |
Paso 6) Guardar, compilar y ejecutar el programa.
Paso 7) Salida inesperada =? Los botones se superponen.
Java Layout Manger
El Administrador de diseño se usa para diseñar (o organizar) los componentes java de la GUI dentro de un contenedor. Hay muchos administradores de diseño, pero los más utilizados son:
Java BorderLayout
A BorderLayoutcoloca componentes en hasta cinco áreas: arriba, abajo, izquierda, derecha y centro. Es el administrador de diseño predeterminado para cada java JFrame
Java FlowLayout
FlowLayoutes el administrador de diseño predeterminado para cada JPanel. Simplemente establece los componentes en una sola fila, uno después del otro.
Java GridBagLayout
Es el más sofisticado de todos los diseños. Alinea los componentes colocándolos dentro de una grilla de celdas, permitiendo que los componentes abarquen más de una celda.
Paso 8) ¿Qué hay de la creación de un cuadro de chat como a continuación?
Intenta codificarte antes de mirar el programa a continuación.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | // Por lo general, necesitarás paquetes Swing y Awt // incluso si estás trabajando con solo swings. import javax.swing.*; import java.awt.*; clase gui { public static void main(String args[]) { // Creando el Marco JFrame frame = new JFrame(«Chat Frame»); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 400); // Creando MenuBar y agregando componentes JMenuBar mb = new JMenuBar(); JMenu m1 = new JMenu(«ARCHIVO»); JMenu m2 = new JMenu(«Ayuda»); mb.add(m1); mb.add(m2); JMenuItem m11 = new JMenuItem(«Abrir»); JMenuItem m22 = new JMenuItem(«Guardar como»); m1.add(m11); m1.add(m22); // Creando el panel en la parte inferior y agregando componentes JPanel panel = new JPanel(); // el panel no está visible en la salida el label = new JLabel(«Introducir texto»); JTextField tf = new JTextField(10); // acepta hasta 10 caracteres JButton send = new JButton(«Enviar»); JButton reset = new JButton(«Restablecer»); panel.add(etiqueta); // Componentes agregados usando Flow Layout panel.add(etiqueta); // Componentes agregados usando Flow Layout panel.add(tf); panel.add(enviar); panel.add(restablecer); // Área de texto en el centro JTextArea ta = new JTextArea(); // Agregar componentes al marco. frame.getContentPane().add(BorderLayout.SOUTH, panel); frame.getContentPane().add(BorderLayout.NORTH, mb); frame.getContentPane().add(BorderLayout.CENTER, ta); frame.setVisible(true); } } |