Archivos e Interfaz de Usuario

Los delegadores en Swing

Cómo usar delegadores en Swing para manejar eventos y mejorar la interacción de tus interfaces.

¿Qué es un delegador en Swing?

Los delegadores en Swing son clases que se encargan de aplicar características visuales y de comportamiento a los componentes. Estos delegadores permiten personalizar la apariencia y el funcionamiento de los componentes sin necesidad de modificar su código fuente. En Swing, los delegadores se utilizan para manejar eventos, como clics de mouse, teclas presionadas, etc., y para aplicar estilos visuales a los componentes.

Cómo usar delegadores en Swing

Para usar delegadores en Swing, debes crear una clase que extienda de javax.swing.plaf.ComponentUI y luego registrar esta clase como el delegador para el componente que deseas personalizar. Aquí tienes un ejemplo básico de cómo crear un delegador para un botón:

import javax.swing.*;
import javax.swing.plaf.ComponentUI;
import java.awt.*;

public class CustomButtonUI extends ComponentUI {
    @Override
    public void paint(Graphics g, JComponent c) {
        // Personaliza la apariencia del botón aquí
        g.setColor(Color.CYAN);
        g.fillRect(0, 0, c.getWidth(), c.getHeight());
        g.setColor(Color.RED);
        g.drawString("Botón Personalizado", 10, 20);
    }

    public static ComponentUI createUI(JComponent c) {
        return new CustomButtonUI();
    }
}

En este ejemplo, hemos creado una clase CustomButtonUI que extiende de ComponentUI. En el método paint, personalizamos la apariencia del botón dibujando un fondo cyan y un texto rojo. Luego, en el método createUI, devolvemos una nueva instancia de nuestro delegador.

Para registrar este delegador para un botón, puedes usar el siguiente código:

import javax.swing.*;  
import javax.swing.plaf.ComponentUI;

public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Ejemplo de Delegador");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 200);

        JButton button = new JButton();
        button.setUI(new CustomButtonUI()); // Registrar el delegador para el botón

        frame.add(button);
        frame.setVisible(true);
    }
}

En este código, creamos un botón y luego registramos nuestro delegador personalizado usando el método setUI. Al ejecutar este código, verás un botón con la apariencia personalizada definida en el delegador.

Tipos de Delegadores en Swing

En Swing, existen varios tipos de delegadores que puedes usar para personalizar diferentes aspectos de los componentes. Algunos de los delegadores más comunes incluyen:

  • BasicButtonUI: Delegador para botones.
  • BasicLabelUI: Delegador para etiquetas.
  • BasicTextFieldUI: Delegador para campos de texto.
  • BasicComboBoxUI: Delegador para cajas de combinación.
  • BasicMenuUI: Delegador para menús.
  • BasicTableUI: Delegador para tablas.
  • BasicTreeUI: Delegador para árboles.
  • BasicScrollBarUI: Delegador para barras de desplazamiento.
  • BasicTabbedPaneUI: Delegador para paneles con pestañas.
  • BasicToolBarUI: Delegador para barras de herramientas.
  • BasicProgressBarUI: Delegador para barras de progreso.

Entre otros. Cada uno de estos delegadores se encarga de manejar la apariencia y el comportamiento de su respectivo componente, lo que te permite personalizar tu interfaz de usuario de manera efectiva.

Conclusión

Los delegadores en Swing son una herramienta poderosa para personalizar la apariencia y el comportamiento de los componentes sin necesidad de modificar su código fuente. Al crear y registrar delegadores personalizados, puedes mejorar la interacción y la estética de tus interfaces de usuario, haciendo que tus aplicaciones sean más atractivas y fáciles de usar. Experimenta con diferentes delegadores y personalizaciones para encontrar el estilo que mejor se adapte a tu aplicación. Recuerda que el uso de delegadores puede afectar el rendimiento de tu aplicación, así que úsalos con moderación para mantener una buena experiencia de usuario.

Copyright Jesús Aurelio Castro Magaña © 2026