"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment repeindre correctement les composants translucides de la balançoire ?

Comment repeindre correctement les composants translucides de la balançoire ?

Publié le 2024-11-25
Parcourir:352

How to Properly Repaint Translucent Swing Components?

Comment gérer la repeinture sur un cadre/panneau/composant translucide

Les composants translucides peuvent présenter des défis de repeinture lors de la mise à jour de leur contenu, conduisant à des effets visuels peu attrayants . Cet article explore une solution impliquant AlphaComposite et fournit des exemples de code pour la mettre en œuvre.

Comprendre AlphaComposite

AlphaComposite permet de manipuler la façon dont les graphiques sont composés sur le cadre. En définissant la règle appropriée, il devient possible de contrôler la transparence des éléments rendus.

Implémentation d'un composant translucide

Une approche consiste à étendre JLabel et à implémenter Icon. Cela permet de créer un composant translucide pouvant afficher du texte.

Modifier l'ensemble du cadre pour qu'il soit translucide

Pour rendre l'ensemble du cadre translucide, ajustez la couleur d'arrière-plan du cadre pour avoir un composant de transparence. Cependant, il est important de noter que cela affectera également l'opacité du contenu.

Exemples de code

Exemple 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);
    }

}

Exemple de cadre translucide :

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);
    }
}

En mettant en œuvre ces techniques, vous pouvez créer des cadres et des composants translucides avec un comportement de repeinture efficace.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3