Swing y JFC: guía completa para interfaces gráficas en Java 21

Swing proporciona una amplia variedad de componentes listos para usar. Todos heredan de JComponent y comparten propiedades comunes: tamaño, color, fuente, borde, tooltip y estado habilitado/visible.

Propiedades comunes a todos los componentes

JButton boton = new JButton("Aceptar");
boton.setEnabled(false);                          // deshabilitar
boton.setVisible(false);                          // ocultar
boton.setToolTipText("Haz clic para confirmar");  // tooltip
boton.setFont(new Font("SansSerif", Font.PLAIN, 14));
boton.setForeground(Color.WHITE);
boton.setBackground(new Color(0, 120, 215));
boton.setBorder(BorderFactory.createEmptyBorder(8, 16, 8, 16));
boton.setPreferredSize(new Dimension(120, 36));

JLabel

JLabel etiqueta = new JLabel("Nombre:");
etiqueta.setDisplayedMnemonic(KeyEvent.VK_N); // Alt+N enfocará el componente asociado
etiqueta.setLabelFor(campoTexto);

// Label con imagen
JLabel icono = new JLabel(new ImageIcon("logo.png"));
icono.setHorizontalAlignment(SwingConstants.CENTER);

JTextField, JPasswordField y JTextArea

JTextField campo = new JTextField(20); // columnas de ancho
campo.setText("Valor inicial");
campo.setEditable(false); // solo lectura
String valor = campo.getText();

JPasswordField password = new JPasswordField(20);
char[] pass = password.getPassword(); // más seguro que getText()
Arrays.fill(pass, '0'); // limpiar después de usar

JTextArea area = new JTextArea(10, 40); // filas, columnas
area.setLineWrap(true);
area.setWrapStyleWord(true);
JScrollPane scroll = new JScrollPane(area); // siempre envolver en JScrollPane

JButton, JCheckBox, JRadioButton

JButton boton = new JButton("Guardar");
boton.setMnemonic(KeyEvent.VK_G); // Alt+G activa el botón

JCheckBox check = new JCheckBox("Recordarme", true); // checked por defecto
boolean marcado = check.isSelected();

// RadioButtons en grupo (solo uno activo a la vez)
ButtonGroup grupo = new ButtonGroup();
JRadioButton rb1 = new JRadioButton("Opción 1", true);
JRadioButton rb2 = new JRadioButton("Opción 2");
grupo.add(rb1);
grupo.add(rb2);

JComboBox y JList

// JComboBox (desplegable)
String[] opciones = {"Pequeño", "Mediano", "Grande"};
JComboBox<String> combo = new JComboBox<>(opciones);
combo.setSelectedIndex(1);
String seleccion = (String) combo.getSelectedItem();

// JComboBox editable
combo.setEditable(true);

// JList (lista de selección)
DefaultListModel<String> modelo = new DefaultListModel<>();
modelo.addElement("Java"); modelo.addElement("Python");
JList<String> lista = new JList<>(modelo);
lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane scrollLista = new JScrollPane(lista);

JSpinner, JSlider y JProgressBar

JSpinner spinner = new JSpinner(new SpinnerNumberModel(5, 1, 100, 1));
int valor = (int) spinner.getValue();

JSlider slider = new JSlider(0, 100, 50);
slider.setMajorTickSpacing(25);
slider.setPaintTicks(true);
slider.setPaintLabels(true);

JProgressBar barra = new JProgressBar(0, 100);
barra.setValue(75);
barra.setStringPainted(true); // muestra "75%"
// Modo indeterminado (cuando no se conoce el progreso)
barra.setIndeterminate(true);

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP