Swing es parte de las clases de Java Foundation (JFC), las otras partes de JFC son java2D y el kit de herramientas de ventana abstracta (AWT). AWT, Swing y Java 2D se utilizan para crear interfaces gráficas de usuario (GUI) en Java. En este tutorial discutiremos principalmente la API Swing que se usa para construir GUI sobre AWT y es mucho más liviana que AWT.
Un simple ejemplo de columpio
En el siguiente ejemplo, usaríamos varios componentes de swing que no ha aprendido hasta ahora en este tutorial. Discutiremos todo en detalle en los próximos tutoriales de swing.
El siguiente programa de swing crearía una pantalla de inicio de sesión.
import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; public class SwingFirstExample { public static void main(String[] args) { // Creating instance of JFrame JFrame frame = new JFrame("My First Swing Example"); // Setting the width and height of frame frame.setSize(350, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /* Creating panel. This is same as a div tag in HTML * We can create several panels and add them to specific * positions in a JFrame. Inside panels we can add text * fields, buttons and other components. */ JPanel panel = new JPanel(); // adding panel to frame frame.add(panel); /* calling user defined method for adding components * to the panel. */ placeComponents(panel); // Setting the frame visibility to true frame.setVisible(true); } private static void placeComponents(JPanel panel) { /* We will discuss about layouts in the later sections * of this tutorial. For now we are setting the layout * to null */ panel.setLayout(null); // Creating JLabel JLabel userLabel = new JLabel("User"); /* This method specifies the location and size * of component. setBounds(x, y, width, height) * here (x,y) are cordinates from the top left * corner and remaining two arguments are the width * and height of the component. */ userLabel.setBounds(10,20,80,25); panel.add(userLabel); /* Creating text field where user is supposed to * enter user name. */ JTextField userText = new JTextField(20); userText.setBounds(100,20,165,25); panel.add(userText); // Same process for password label and text field. JLabel passwordLabel = new JLabel("Password"); passwordLabel.setBounds(10,50,80,25); panel.add(passwordLabel); /*This is similar to text field but it hides the user * entered data and displays dots instead to protect * the password like we normally see on login screens. */ JPasswordField passwordText = new JPasswordField(20); passwordText.setBounds(100,50,165,25); panel.add(passwordText); // Creating login button JButton loginButton = new JButton("login"); loginButton.setBounds(10, 80, 80, 25); panel.add(loginButton); } }
Producción:
En el ejemplo anterior usamos varios componentes. Discutámoslos un poco primero, luego los discutiremos en detalle en los próximos tutoriales.
JFrame – Un marco es una instancia de JFrame. Marco es una ventana que puede tener título, borde, menús, botones, campos de texto y muchos otros componentes. Una aplicación Swing debe tener un marco para agregarle componentes.
JPanel – Un panel es una instancia de JPanel. Un marco puede tener más de un panel y cada panel puede tener varios componentes. También puede llamarlos partes de Frame. Los paneles son útiles para agrupar componentes y colocarlos en las posiciones adecuadas en un marco.
JLabel – Una etiqueta es una instancia de la clase JLabel. Una etiqueta consta de texto e imágenes no seleccionables. Si desea mostrar una cadena o una imagen en un marco, puede hacerlo mediante etiquetas. En el ejemplo anterior queríamos mostrar los textos de “Usuario” y “Contraseña” justo antes de los campos de texto, lo hicimos creando y agregando etiquetas en los lugares apropiados.
JTextField – Usado para capturar las entradas del usuario, estos son los cuadros de texto donde el usuario ingresa datos.
JPasswordField – Similar a los campos de texto, pero los datos ingresados están ocultos y se muestran como puntos en la GUI.
JButton – Un botón es una instancia de la clase JButton. En el ejemplo anterior tenemos un botón “Iniciar sesión”.