[英]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.