簡體   English   中英

AWT組件上的半透明面板

[英]Translucent panel over AWT component

我有一個AWT組件(第三方庫),我需要通過在其上顯示一個半透明面板(在這種情況下為128,alpha)來掩蓋它。 有沒有辦法做到這一點? 我看了使用Sun的AWTUtilities類的“ TransparentPanel”類,但是它的局限性是無法顯示0 <alpha <255的像素。即使這不是一個很好的解決方案,我也只是在尋找某種方式做這個。

也許帶有半透明塗料的GlassPane可以解決此問題。 這是一個簡單的例子:

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class GlassFrame extends JComponent
{
    public GlassFrame()
    {
        super();
    }

    @Override
    protected void paintComponent(Graphics g)
    {
        Graphics2D g2 = (Graphics2D)g.create();

        Paint p = new GradientPaint(
                0, 0, new Color(200,180,180,200), //Select RGB and Alpha values
                getWidth(), 0, new Color(0,0,0,0)
            );
        g2.setPaint(p);
        g2.fillRect(0, 0, getWidth(), getHeight());

        g2.dispose();
    }

    public static void main(String args[])
    {
        JFrame jf = new JFrame("Simple test");
        jf.add(new JPanel());
        GlassFrame g = new GlassFrame();

        jf.setSize(300,300);
        jf.setVisible(true);

        jf.setGlassPane(g);
        g.setVisible(true);
     }
}

據我所知,您不能這樣做。 更接近的是創建一個AWT組件的屏幕截圖,同時在上方顯示一個swing組件,並最終不時刷新屏幕截圖。 這意味着本地組件並不真正存在,並且不能在屏幕捕獲模式下使用(不響應鼠標單擊和按鍵事件)。

這是DJ NativeSwing示例的一個操作,該操作將具有alpha透明性的Swing PNG圖像疊加在嵌入式Web瀏覽器上方。 檢查演示: http : //djproject.sourceforge.net/ns

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM