java swing tutorial container
Este completo video tutorial de Java Swing explica varios componentes del GUI Swing Framework y conceptos relacionados como JPanel, JFrame, JButton, etc.
Usamos interfaces gráficas de usuario (comúnmente llamadas GUI) para crear aplicaciones que tienen una interfaz visual facilitando al usuario el uso de la aplicación.
Tener una interfaz visual para una aplicación hace que la aplicación sea fácil de navegar, usar los controles de manera más eficiente y también es visualmente atractiva para el usuario.
Swing se utiliza principalmente para crear la GUI para aplicaciones.
=> Visite aquí para ver la serie de formación Java para todos.
Lo que vas a aprender:
- Video tutorial sobre Java Swing
- ¿Qué es Java Swing?
- Componentes de Java Swing
- Clases de swing en Java
- Swing Vs JavaFX
- Conclusión
Video tutorial sobre Java Swing
¿Qué es Java Swing?
Java proporciona muchos marcos de GUI que nos ayudan a desarrollar una variedad de aplicaciones de GUI. Hemos visto uno en nuestro tutorial anterior, es decir, Abstract Window Toolkit o AWT. AWT es uno de los marcos de GUI más antiguos de Java y también depende de la plataforma. Otra desventaja de AWT son sus componentes de peso pesado.
En este tutorial, discutiremos otro marco de GUI en Java, es decir, 'SWING'. El marco Swing en Java es parte de Java Foundation Classes o comúnmente llamado JFC. JFC es una API similar a MFC (Microsoft Foundation Classes) en C ++. JFC contiene Swing, AWT y Java2D.
El marco Swing en Java está construido sobre el marco AWT y se puede usar para crear aplicaciones GUI como AWT. Pero a diferencia de AWT, los componentes Swing son livianos y no dependen de la plataforma.
El marco Swing está escrito completamente en Java. El marco Swing en Java se proporciona a través del paquete 'javax.swing'. Las clases del paquete javax.swing comienzan con la letra 'J'. Entonces, en un paquete javax.swing, tendremos clases como JButton, JFrame, JTextField, JTextArea, etc.
En general, la API de Swing tiene todos los controles definidos en el paquete javax.swing que está presente en AWT. Entonces, el swing de alguna manera actúa como un reemplazo de AWT. Además, Swing tiene varios paneles con pestañas de componentes avanzados. Swing API en Java adapta la arquitectura MVC (Model View Controller).
Las principales características de esta arquitectura son:
- Los datos del componente swing se representan mediante Model.
- Se representa visualmente mediante una vista.
- El componente del controlador de la arquitectura MVC lee la entrada del usuario en la vista y luego estos cambios se pasan a los datos del componente.
- En cada componente de Swing, la vista y el controlador se combinan mientras que el modelo es diferente. Esto le da al swing una característica de apariencia y sensación conectable.
Las características de la API swing se resumen a continuación.
- Los componentes del columpio son independientes de la plataforma.
- La API es extensible.
- Los componentes del columpio son livianos. Los componentes swing están escritos en Java puro y también los componentes se procesan utilizando código Java en lugar de llamadas al sistema subyacente.
- Swing API proporciona un conjunto de controles avanzados como TabbedPane, Tree, Colorpicker, controles de tabla, etc. que son ricos en funcionalidad.
- Los controles de giro son altamente personalizables. Esto se debe a que la apariencia o apariencia del componente es independiente de la representación interna y, por lo tanto, podemos personalizarlo de la forma que deseemos.
- Simplemente podemos cambiar los valores y así alterar la apariencia en tiempo de ejecución.
Componentes de Java Swing
Swing tiene un gran conjunto de componentes que podemos incluir en nuestros programas y aprovechar las ricas funcionalidades con las que podemos desarrollar aplicaciones GUI altamente personalizadas y eficientes.
Entonces, ¿qué es un componente?
Un componente se puede definir como un control que se puede representar visualmente y suele ser independiente. Tiene una funcionalidad específica y se representa como una clase individual en Swing API.
Por ejemplo, clase JButton en swing API es un componente de botón y proporciona la funcionalidad de un botón.
Uno o más componentes forman un grupo y este grupo se puede colocar en un 'contenedor'. Un contenedor proporciona un espacio en el que podemos mostrar componentes y también gestionar su espaciado, diseño, etc.
En Java, los contenedores se dividen en dos tipos, como se muestra a continuación:

Clases de swing en Java
A continuación se muestra una jerarquía de API de Swing en Java:

Como se ve en la jerarquía anterior, tenemos clases de contenedor: marco, diálogo, panel, applet, etc. También hay clases de componente derivadas de la clase JComponent de la API Swing. Algunas de las clases que heredan de JComponent son JLabel, JList, JTextBox, etc.
Algunas de las clases importantes de Swing API son las siguientes:
- JWindow: La clase JWindow de Swing hereda la clase Window directamente. La clase JWindow usa 'BorderLayout' como diseño predeterminado.
- JPanel: JPanel es un descendiente de la clase JComponent y está en líneas similares a la clase AWT Panel y tiene 'FlowLayout' como diseño predeterminado.
- JFrame: JFrame desciende de la clase Frame. Los componentes agregados al marco se denominan contenidos del marco.
- JLabel: La clase JLabel es una subclase de JComponent. Se utiliza para crear etiquetas de texto en la aplicación.
- JButton: JButton proporciona la funcionalidad del botón pulsador en Swing. Podemos asociar una cadena, un icono o ambos con el objeto JButton.
- JTextField: La clase JTextField proporciona un campo de texto en el que podemos editar una sola línea de texto.
JFrame en Java
Un marco, en general, es un contenedor que puede contener otros componentes como botones, etiquetas, campos de texto, etc. Una ventana de marco puede contener un título, un borde y también menús, campos de texto, botones y otros componentes. Una aplicación debe contener un marco para que podamos agregar componentes dentro de él.
El marco en Java Swing se define en la clase javax.swing.JFrame. La clase JFrame hereda la clase java.awt.Frame. JFrame es como la ventana principal de la aplicación GUI que usa swing.
Podemos crear un objeto de ventana JFrame usando dos enfoques:
como copiar una matriz java
# 1) Ampliando la clase JFrame
El primer enfoque es crear una nueva clase para construir un marco. Esta clase hereda de la clase JFrame del paquete javax.swing.
El siguiente programa implementa este enfoque.
|_+_|Producción:
# 2) Creando una instancia de la clase JFrame
|_+_|Producción:

En el programa anterior, hemos creado un marco de la clase JFrame creando una instancia de la clase JFrame.
JPanel en Java
Un panel es un componente que se encuentra dentro de una ventana de marco. Un marco puede tener más de componentes de un panel en su interior y cada componente de panel puede tener varios otros componentes.
En términos más sencillos, podemos utilizar paneles para dividir el marco. Cada panel agrupa varios otros componentes en su interior. En otras palabras, usamos paneles para organizar componentes dentro del marco.
La clase de API swing que implementa el componente del panel es JPanel. La clase JPanel hereda de JComponent y tiene FlowLayout como su diseño predeterminado.
El siguiente programa demuestra la creación de un contenedor de panel en un marco usando clases de paquete javax.swing.
|_+_|Producción:

Aquí tenemos un Frame. Dentro del marco, creamos un panel. Luego, dentro del panel, creamos un botón. De esta forma podemos usar un panel para contener los otros componentes.
JTextArea en Java
TextArea define un campo de texto editable. Puede tener varias líneas. La clase swing que define el área de texto es JTextArea y hereda la clase JTextComponent.
La clase pública JTextArea extiende JTextComponent
La clase JTextArea contiene 4 constructores que nos permiten crear un área de texto con varias opciones.
- JTextArea (): Constructor predeterminado. Crea un área de texto vacía.
- JTextArea (Cadena s): Crea un área de texto con s como valor predeterminado.
- JTextArea (fila int, columna int): Crea un área de texto con una fila x columna especificada.
- JTextArea (String s, int fila, int columna): Crea un texto are2a con una fila x columna especificada y valores predeterminados s.
El siguiente programa Java muestra un ejemplo del componente JTextArea en el swing.
|_+_|Producción:

JButton en Java
Un botón es un componente que se utiliza para crear un botón pulsador con un nombre o etiqueta. En swing, la clase que crea un botón etiquetado es JButton. JButton hereda la clase AbstractButton. Podemos asociar el evento ActionListener al botón para que realice alguna acción cuando se presiona.
Implementemos un programa de ejemplo para JButton en cambios de Java.
|_+_|Producción:

JList en Java
Una lista consta de varios elementos de texto. Los usuarios pueden seleccionar un solo elemento o varios elementos a la vez. La clase que implementa la lista en la API swing es JList. JList es un descendiente de la clase JComponent.
A continuación se muestran los constructores de la clase JList.
- JList (): Constructor predeterminado que crea una lista vacía de solo lectura.
- JList (array () listItem): Cree una JList que inicialmente contenga elementos de la matriz listItem.
- JList (ListModel dataModel): Crea una lista con elementos del modelo especificado dataModel.
A continuación se ofrece una demostración simple del componente JList.
|_+_|Producción:

En el programa anterior, primero definimos un listModel con entradas de color en él. Luego creamos un objeto JList y le agregamos el listModel. A continuación, el objeto JList se agrega al objeto de marco que luego se muestra.
JComboBox en Java
La clase JCombobox muestra una lista de opciones entre las que un usuario puede seleccionar una opción. La opción seleccionada está en la parte superior. JComboBox se deriva de la clase JComponent.
Los siguientes son los constructores proporcionados por la clase JComboBox:
cómo abrir un archivo torrentado en Windows
- JComboBox (): Constructor predeterminado que crea un ComboBox con el modelo de datos predeterminado.
- JComboBox (Objeto () elementos): Este constructor crea un ComboBox que tiene elementos como elementos de los elementos de la matriz dados.
- JComboBox (elementos vectoriales): Este constructor lee los elementos del vector dado y construye un ComboBox con estos elementos como sus elementos.
La clase JComboBox también proporciona métodos para agregar / eliminar elementos, agregar ActionListener, ItemListener, etc.
El siguiente ejemplo demuestra la implementación de JComboBox en Java.
|_+_|Producción:

JSlider en Java
Un control deslizante nos permite seleccionar un rango específico de valores. En Java Swing API, JSlider es la clase que se utiliza para implementar el control deslizante.
Los siguientes son los constructores proporcionados por la clase JSlider.
- JSlider (): un constructor predeterminado que crea un control deslizante que tiene 50 como valor inicial y un rango de 0 a 100.
- JSlider (orientación int): este constructor crea un control deslizante como el anterior pero con una orientación específica. El valor de orientación puede ser JSlider.HORIZONTAL o JSlider.VERTICAL.
- JSlider (int min, int max): este constructor se usa para crear un control deslizante horizontal usando el mínimo y el máximo dados.
- JSlider (int min, int max, int value): este constructor crea un control deslizante que es horizontal con el valor especificado de min, max y value.
- JSlider (int orientación, int min, int max, int value): este constructor construye un control deslizante con la orientación, min, max y valor especificados.
El siguiente programa demuestra JSlider en Java con ticks. Este programa también demuestra el uso de los métodos admitidos por la clase JSlider.
|_+_|Producción:

Manejo de eventos en Java
Un evento puede definirse como un cambio de estado de un objeto. Desde el punto de vista de la GUI, se produce un evento cuando el usuario final interactúa con los componentes de la GUI. Los eventos que se activan en la GUI pueden ser el clic de un botón, el desplazamiento, la selección de elementos de la lista, el cambio de texto, etc.
Los eventos que ocurren en la GUI enumerados anteriormente son principalmente eventos de primer plano. También podemos tener algunos eventos en segundo plano como la finalización de la operación en segundo plano, la expiración del temporizador, etc.
El manejo de eventos es un mecanismo a través del cual se toma una acción cuando ocurre un evento. Para esto, definimos un método que también se llama controlador de eventos que se llama cuando ocurre un evento. Java utiliza un mecanismo estándar llamado 'modelo de eventos de delegación' para generar y gestionar eventos.
El modelo de evento de delegación consta de:
# 1) Fuente: La Fuente del evento es el objeto. El objeto en el que ocurre un evento es la fuente y la fuente es responsable de enviar información sobre el evento al controlador de eventos.
# 2) Oyente: El oyente no es más que el controlador de eventos responsable de realizar una acción cuando ocurre un evento. En Java, un oyente es un objeto que espera un evento. Una vez que ocurre el evento, el oyente procesa el evento.
El requisito es registrar al oyente con el objeto para que cuando ocurra un evento, el oyente pueda procesarlo.
Por ejemplo,para un evento de clic de botón, podemos tener la siguiente secuencia de pasos.
- El usuario hace clic en el botón que genera un evento Click.
- Se crea el objeto de clase de evento apropiado y los datos de origen y evento se pasan a este objeto.
- Este objeto de evento luego se pasa a la clase de escucha registrada con el objeto.
- El oyente se ejecuta y regresa.
Ahora analicemos algunos de los oyentes proporcionados por Java.
ActionListener en Java
Un actionListener es el oyente de un botón o un elemento de menú. Cuando hacemos clic en un botón, el botón Listener involucrado es el actionListener. El actionListener recibe una notificación en ActionEvent.
El paquete de eventos java.awt.an define la interfaz ActionListener. Esta interfaz tiene solo un método actionPerformed ().
public abstract void actionPerformed (ActionEvent e);
Cuando se hace clic en un componente registrado, como un botón, se invoca automáticamente el método actionPerformed ().
El enfoque más común para incluir ActionListener en el programa es implementar la interfaz ActionListener y luego implementar el método actionPerformed ().
Los pasos para implementar la clase ActionListener son los siguientes:
# 1) Implementar la interfaz ActionListerner.
ActionListenerImpl de clase pública implementa ActionListener
# 2) Registre el componente con este oyente. Si el botón es un componente que queremos registrar con el oyente, lo registraremos de la siguiente manera:
button.addActionListener (instanceOfListenerclass);
# 3) Implemente / anule el método actionPerformed ().
|_+_|Entonces, usando los pasos anteriores, podemos asociar cualquier evento con el componente GUI.
El siguiente ejemplo muestra un evento Click de botón usando ActionListener.
|_+_|Producción:

El programa anterior implementa un evento ActionListener. El evento es el evento de clic de botón y con él, hemos asociado un ActionListener que muestra el texto en el campo de texto al hacer clic en el botón.
KeyListener en Java
Siempre que hay un cambio en el estado de la clave, se notifica a un KeyListener. Al igual que ActionListener, KeyListener también se encuentra en el paquete java.awt.event.
La interfaz KeyListener proporciona los siguientes métodos:
keyPressed vacío abstracto público (KeyEvent e);
keyReleased vacío abstracto público (KeyEvent e);
keyTyped vacío abstracto público (KeyEvent e);
Necesitamos implementar los métodos anteriores para asociar los eventos clave con el componente. Dejamos que el usuario implemente un ejemplo de KeyListener usando swings en Java.
Diseños de swing en Java
Cuando colocamos varios componentes en un contenedor, decimos que estamos colocando esos componentes. Entonces, un diseño se puede definir como el posicionamiento de componentes en un contenedor.
Siempre que haya menos componentes, se pueden colocar arrastrando y soltando manualmente. Pero resulta difícil disponer los componentes en grandes cantidades. En este momento, Layout Manager de Java viene en nuestra ayuda.
LayoutManager es responsable del diseño de los componentes en las aplicaciones GUI. LayoutManager es una interfaz y es implementada por todas las clases del administrador de diseño. Java proporciona las siguientes clases de LayoutManager.
| LayoutManager | Descripción |
|---|---|
| javax.swing.GroupLayout | Agrupa los componentes y luego los coloca en el contenedor. |
| java.awt.BorderLayout | Los componentes están dispuestos para encajar en cinco direcciones, a saber, centro, este, oeste, sur, norte. |
| java.awt.FlowLayout | Este es el diseño predeterminado. Coloca los componentes en el flujo direccional. |
| java.awt.GridLayout | Organiza los componentes en una cuadrícula rectangular. |
| javax.swing.BoxLayout | Los componentes están dispuestos en una caja. |
| java.awt.CardLayout | Cada componente se ve como una carta en un mazo y, a la vez, solo un componente es visible. |
| java.awt.GridBagLayout | Organiza los componentes de forma vertical, horizontal o incluso a lo largo de sus líneas base. No es necesario que los componentes sean del mismo tamaño. |
| javax.swing.ScrollPaneLayout | Utilizado por la clase JScrollPane y es responsable de organizar los componentes en contenedores desplazables. |
| javax.swing.SpringLayout etc. | Se proporciona un conjunto de restricciones como la distancia horizontal y vertical entre componentes, etc. y los componentes se organizan de acuerdo con este conjunto de restricciones. |
En este tutorial, solo discutiremos FlowLayout y GridLayout.
FlowLayout en Java
FlowLayout organiza los componentes en una dirección de flujo, uno tras otro. Este es el diseño predeterminado para los contenedores como Panel y Applet.
La clase FlowLayout en Java que representa al administrador FlowLayout contiene los siguientes campos y constructores.
Campos de la clase FlowLayout
- público estático final int LEADING
- público estático final int TRAILING
- public static final int LEFT
- public static final int DERECHA
- público estático final int CENTER
Los campos anteriores definen las posiciones en las que se colocarán o alinearán los componentes.
Constructores de la clase FlowLayout
- FlowLayout (): Este es un constructor predeterminado. Este constructor crea un diseño de flujo que tiene componentes alineados centralmente con un espacio predeterminado de 5 unidades en la dirección horizontal y vertical.
- FlowLayout (alineación int): Este constructor crea un diseño de flujo con el valor de alineación especificado y con un espacio horizontal y vertical de 5 unidades.
- FlowLayout (alineación int, hgap int, vgap int): Crea un diseño de flujo con un valor de alineación especificado y un espacio horizontal y vertical.
A continuación se muestra un ejemplo de FlowLayout en Java.
|_+_|Producción:

GridLayout en Java
Usando GridLayout podemos diseñar los componentes en forma de cuadrícula rectangular, es decir, cada componente está dispuesto en cada rectángulo.
Constructores de la clase GridLayout
- Diseño de cuadrícula (): constructor predeterminado que genera un diseño de cuadrícula con una columna por componente en una fila.
- GridLayout (filas int, columnas int): este constructor genera un diseño de cuadrícula con filas y columnas especificadas. No hay espacio entre los componentes.
- GridLayout (int filas, int columnas, int hgap, int vgap): Usando este constructor, generamos un diseño de cuadrícula con filas y columnas específicas y espacios horizontales y verticales.
El siguiente ejemplo implementa GridLayout en Java.
|_+_|Producción:

Setbounds en Java
Si revisamos los ejemplos de programación en este tutorial antes del tema de diseño, podemos ver que hemos establecido el diseño como nulo en estos ejemplos (setLayout (null)). Hemos visto que cuando usamos administradores de diseño en nuestro programa, colocan automáticamente los componentes.
Cuando no se utilizan administradores de diseño, podemos utilizar el método setBounds para el tamaño y la posición del componente. Entonces, el método setBounds se usa para colocar manualmente el componente y también establecer el tamaño.
La sintaxis general del método setBounds es la siguiente:
setBounds (int x-coordenada, int y - coordenada, int ancho, int alto)
Implementemos ahora un ejemplo del método SetBounds.
|_+_|Producción:
limpiador de registro freeware para windows 10

En el programa anterior, tenemos un componente Botón. No hemos establecido ningún diseño, pero hemos utilizado el método setBounds para establecer su posición y dimensiones.
Swing Vs JavaFX
| Columpio | JavaFX |
|---|---|
| Swing proporciona una API para crear componentes GUI. | JavaFX proporciona scripts y desarrollo rápido de UI asociados con el generador de pantallas. |
| No se agregarán nuevas funciones a Swing en versiones futuras. | JavaFX proporciona una amplia funcionalidad y tiene el potencial de más funciones en versiones futuras. |
| Podemos crear todos los componentes estándar usando Swing API. | JavaFX nos permite crear componentes GUI enriquecidos con apariencia avanzada. |
| En Swing hay una gran cantidad de componentes. | JavaFX tiene un número comparativamente menor de componentes. |
| Swing es una biblioteca de interfaz de usuario con todas las funciones. | JavaFX es una API nueva y próxima con componentes de interfaz de usuario enriquecidos. |
| El columpio tiene un soporte MVC suelto. | JavaFX admite el patrón MVC de forma consistente. |
Preguntas frecuentes
P # 1) ¿Swing todavía se usa en Java?
Responder: Sí, Swing todavía se usa en Java y eso es demasiado. A veces se utiliza como un reemplazo completo de AWT. A veces también se usa junto con algunos de los componentes de AWT. Incluso se usa con el último JavaFX. Por lo tanto, Swing todavía se usa y se usará durante mucho tiempo.
P # 2) ¿Cómo funciona Java Swing?
Responder: Swing en Java está escrito sobre el marco AWT. Entonces, el manejo de eventos de AWT es heredado por swing por completo. Swing también proporciona una gran cantidad de componentes que podemos utilizar para desarrollar aplicaciones GUI eficientes.
P # 3) ¿Swing sigue a MVC?
Responder: Swing API tiene soporte MVC suelto. El modelo representa los datos del componente. El componente swing tiene un elemento separado llamado Modelo, mientras que Controlador y Vista se combinan en elementos de la interfaz de usuario. Este clubbing permite que el swing tenga una apariencia y sensación conectables.
P # 4) ¿JavaFX es mejor que Swing?
Responder: Swing ha existido durante mucho tiempo y tiene un soporte IDE más maduro. También tenía una biblioteca de componentes muy grande. JavaFX es comparativamente más nuevo y tiene una pequeña biblioteca de componentes pero con actualizaciones más consistentes y soporte MVC consistente. Por lo tanto, depende de cómo JavaFX se desarrolle y proporcione más funciones.
P # 5) ¿Qué es mejor AWT o Swing?
Responder: Swing está construido sobre AWT y proporciona un conjunto amplio y rico de componentes de interfaz de usuario en comparación con AWT. Los componentes de swing también pueden tener su apariencia y sensación en comparación con los componentes AWT que tienen una apariencia y sensación del sistema operativo.
Los componentes del swing son más rápidos que los AWT. Todos estos factores hacen que el swing sea mejor que el AWT.
Más sobre Java Swing
Cuando crea una aplicación, inicialmente debe tener un contenedor base y debe agregar los componentes requeridos como botones y campos de texto en el contenedor.
Y cuando hace clic o realiza cualquier operación en cualquier campo, el evento ocurrirá y su código debe escuchar los eventos y también manejar el evento.
Contenedor de columpio
Un contenedor es un elemento raíz de una aplicación. Todos los demás componentes se agregan a esa raíz y forma una jerarquía.
Hay tres clases de contenedores:
- JFrame
- JDialog
- JApplet
Demostración de contenedor usando JFrame:
|_+_| 
Cuando ejecute el programa anterior, obtendrá el siguiente resultado.

Componentes
La clase JComponent es una clase base para todos los componentes de un swing.
Los componentes de uso frecuente incluyen,
- JButton
- JTextField
- JTextArea
- JRadioButton
- JComboBox etc.
Todos estos componentes deben agregarse al contenedor, si no, no aparecerá en la aplicación.
Ejemplo:
Para crear la instancia del botón,
JButton clickButton = nuevo JButton ();
Para agregar el botón al contenedor,
myFrame.add ();
Manejo de eventos
Todas las aplicaciones son impulsadas por eventos como clics de botones, clics del mouse, entrada de texto del usuario, etc. Cuando ocurre el evento, debe agregar un oyente y debe pasar el objeto de evento de origen.
Con una clase interna, puede manejar el evento con su lógica como se muestra a continuación.
|_+_| 
Conclusión
En este tutorial, nos hemos puesto en contacto con la API Swing proporcionada por Java para crear aplicaciones GUI. Hemos hablado de los principales contenedores y componentes oscilantes y su implementación.
También hemos hablado del manejo de eventos en Swing. Aunque el mecanismo de manejo de eventos es de AWT, swing implementa los eventos de manera eficiente. Luego discutimos los diversos administradores de diseño proporcionados por Swing API que nos permiten diseñar u organizar varios componentes en las aplicaciones Swing GUI.
=> Consulte la guía de formación de Java perfecta aquí.
Lectura recomendada
- Tutorial de reflexión de Java con ejemplos
- Tutorial de JAVA para principiantes: más de 100 tutoriales prácticos en vídeo de Java
- Tutorial de Java Collections Framework (JCF)
- Modificadores de acceso en Java: tutorial con ejemplos
- Tutorial Java String con String Buffer y String Builder
- Introducción al lenguaje de programación Java - Tutorial en vídeo