Maison > Java > javaDidacticiel > Comment repeindre correctement les composants translucides de la balançoire ?

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

Barbara Streisand
Libérer: 2024-12-01 08:10:13
original
880 Les gens l'ont consulté

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 la création d'un composant translucide pouvant afficher du texte.

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

}
Copier après la connexion

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);
    }
}
Copier après la connexion

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal