Rumah > Java > javaTutorial > Bagaimana untuk mengecat semula JLabel dengan betul pada Tetingkap Lutsinar di Java pada macOS?

Bagaimana untuk mengecat semula JLabel dengan betul pada Tetingkap Lutsinar di Java pada macOS?

Barbara Streisand
Lepaskan: 2024-11-20 12:07:11
asal
269 orang telah melayarinya

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

Cat semula pada komponen lut sinar

Soalan: Apabila cuba mencipta tetingkap lut sinar dalam Java pada macOS dan menambah JLabel dengan teks dinamik, komponen tidak mengecat semula dengan betul.

Penyelesaian: Untuk menyelesaikan isu, JLabel tersuai boleh dilanjutkan dan antara muka Ikon dilaksanakan untuk mencapai kesan lut sinar yang diingini. Berikut ialah contoh menggunakan 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();
    }
}
Salin selepas log masuk

Dalam pendekatan ini, JLabel tersuai (TranslucentLabel) dicipta dan teknik AlphaComposite digunakan untuk mengarang latar belakang separa lutsinar di atas latar belakang bingkai lut sinar, memastikan komponen mengecat semula dengan betul.

Atas ialah kandungan terperinci Bagaimana untuk mengecat semula JLabel dengan betul pada Tetingkap Lutsinar di Java pada macOS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan