Maison > Java > javaDidacticiel > le corps du texte

Comment repeindre correctement un JLabel sur une fenêtre translucide en Java sur macOS ?

Barbara Streisand
Libérer: 2024-11-20 12:07:11
original
206 Les gens l'ont consulté

How to Correctly Repaint a JLabel on a Translucent Window in Java on macOS?

Repeindre sur un composant translucide

Question : Lorsque vous tentez de créer une fenêtre translucide en Java sur macOS et que vous ajoutez un JLabel avec texte dynamique, le composant ne repeint pas correctement.

Solution : Pour résoudre le problème, un JLabel personnalisé peut être étendu et l'interface Icon implémentée pour obtenir l'effet translucide souhaité. Voici un exemple utilisant AlphaComposite :

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

public class TranslucentLabel extends JLabel {

    private Image image;
    private AlphaComposite alphaComposite;

    public TranslucentLabel() {
        super();
        setBackground(new Color(0f,0f,0f,0.3f));
        alphaComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f);
    }

    @Override
    public void paintComponent(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        image = createImage(getWidth(), getHeight());
        Graphics2D imageGraphics = (Graphics2D) image.getGraphics();
        imageGraphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        super.paintComponent(imageGraphics);
        g2d.setComposite(alphaComposite);
        g2d.drawImage(image, 0, 0, null);
        g2d.dispose();
    }
}
Copier après la connexion

Dans cette approche, un JLabel personnalisé (TranslucentLabel) est créé et la technique AlphaComposite est appliquée pour composer un arrière-plan semi-transparent sur l'arrière-plan du cadre translucide, garantissant que le composant repeint correctement.

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