"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo repintar correctamente los componentes translúcidos del columpio?

¿Cómo repintar correctamente los componentes translúcidos del columpio?

Publicado el 2024-11-25
Navegar:455

How to Properly Repaint Translucent Swing Components?

Cómo manejar el repintado en un marco/panel/componente translúcido

Los componentes translúcidos pueden presentar desafíos de repintado al actualizar su contenido, lo que genera efectos visuales poco atractivos . Este artículo explora una solución que involucra AlphaComposite y proporciona ejemplos de código para implementarla.

Comprensión de AlphaComposite

AlphaComposite permite manipular cómo se componen los gráficos en el marco. Al establecer la regla adecuada, es posible controlar la transparencia de los elementos renderizados.

Implementar un componente translúcido

Un enfoque es extender JLabel e implementar Icon. Esto permite la creación de un componente translúcido que puede mostrar texto.

Modificar todo el marco para que sea translúcido

Para hacer que todo el marco sea translúcido, ajuste el color de fondo del marco para que tenga un componente de transparencia. Sin embargo, es importante tener en cuenta que esto también afectará la opacidad del contenido.

Ejemplos de código

Ejemplo de JLabel:

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JLabel;

public class TranslucentJLabel extends JLabel {

    public TranslucentJLabel() {
        setOpaque(false);
        setBackground(new Color(0f, 0f, 0f, 0.5f));
        setFont(new Font("Serif", Font.PLAIN, 48));
    }

    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        g2d.setComposite(AlphaComposite.SrcOver);
        super.paintComponent(g2d);
    }

}

Ejemplo de marco translúcido:

import java.awt.AlphaComposite;
import java.awt.Color;
import javax.swing.JFrame;

public class TranslucentFrame extends JFrame {

    public TranslucentFrame() {
        setBackground(new Color(0f, 0f, 0f, 0.7f));
        setUndecorated(true);
        setSize(300, 200);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    @Override
    public void paint(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        g2d.setComposite(AlphaComposite.SrcOver);
        super.paint(g2d);
    }
}

Al implementar estas técnicas, puedes crear marcos y componentes translúcidos con un comportamiento efectivo de repintado.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3