Heim > Java > javaLernprogramm > Hauptteil

Wie kann ich ein JLabel in einem durchscheinenden Fenster in Java unter macOS korrekt neu zeichnen?

Barbara Streisand
Freigeben: 2024-11-20 12:07:11
Original
206 Leute haben es durchsucht

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

Auf durchscheinender Komponente neu streichen

Frage: Beim Versuch, ein durchscheinendes Fenster in Java unter macOS zu erstellen und ein hinzuzufügen JLabel mit dynamischem Text, die Komponente wird nicht neu gezeichnet korrekt.

Lösung: Um das Problem zu beheben, kann ein benutzerdefiniertes JLabel erweitert und die Icon-Schnittstelle implementiert werden, um den gewünschten durchscheinenden Effekt zu erzielen. Hier ist ein Beispiel mit 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();
    }
}
Nach dem Login kopieren

Bei diesem Ansatz wird ein benutzerdefiniertes JLabel (TranslucentLabel) erstellt und die AlphaComposite-Technik angewendet, um einen halbtransparenten Hintergrund über dem durchscheinenden Rahmenhintergrund zu erstellen und so sicherzustellen, dass die Komponente wird korrekt neu lackiert.

Das obige ist der detaillierte Inhalt vonWie kann ich ein JLabel in einem durchscheinenden Fenster in Java unter macOS korrekt neu zeichnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage