Rumah >Java >javaTutorial >Bagaimana Mengecat Semula Komponen Ayunan Lutsinar dengan Betul?

Bagaimana Mengecat Semula Komponen Ayunan Lutsinar dengan Betul?

Barbara Streisand
Barbara Streisandasal
2024-12-01 08:10:13944semak imbas

How to Properly Repaint Translucent Swing Components?

Cara Mengendalikan Pengecatan Semula pada Bingkai/Panel/Komponen Lutsinar

Komponen lutsinar boleh memberikan cabaran mengecat semula apabila mengemas kini kandungannya, yang membawa kepada kesan visual yang tidak menarik . Artikel ini meneroka penyelesaian yang melibatkan AlphaComposite dan menyediakan contoh kod untuk melaksanakannya.

Memahami AlphaComposite

AlphaComposite membenarkan manipulasi cara grafik digubah pada bingkai. Dengan menetapkan peraturan yang sesuai, adalah mungkin untuk mengawal ketelusan elemen yang diberikan.

Melaksanakan Komponen Lutsinar

Salah satu pendekatan ialah melanjutkan JLabel dan melaksanakan Ikon. Ini membolehkan penciptaan komponen lut sinar yang boleh memaparkan teks.

Mengubah suai Keseluruhan Bingkai Menjadi Lutsinar

Untuk menjadikan keseluruhan bingkai lut sinar, laraskan warna latar belakang bingkai untuk mempunyai komponen ketelusan. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa ini juga akan menjejaskan kelegapan kandungan.

Contoh Kod

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

}

Contoh Bingkai Lutsinar:

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

Dengan melaksanakan teknik ini, anda boleh mencipta bingkai dan komponen lut sinar dengan pengecatan semula yang berkesan tingkah laku.

Atas ialah kandungan terperinci Bagaimana Mengecat Semula Komponen Ayunan Lutsinar dengan Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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