Java 理解我所理解的代码有困难';我用它来制作JFrame';的内容窗格是透明的

Java 理解我所理解的代码有困难';我用它来制作JFrame';的内容窗格是透明的,java,swing,Java,Swing,下面是我用来使内容窗格透明的代码。我不明白的是,如果我注释掉“setBackground(新颜色(0,0,0,0));”这一行,我的窗口只是用渐变色和不透明的颜色绘制的。但是使用上面的代码行可以使它透明 有人能告诉我这个“挫折背景(新颜色(0,0,0,0));”和我为JPanel设置的渐变颜色之间的关系吗。 提前准备好 import java.awt.Color; import java.awt.FlowLayout; import java.awt.GradientPaint; import

下面是我用来使内容窗格透明的代码。我不明白的是,如果我注释掉“setBackground(新颜色(0,0,0,0));”这一行,我的窗口只是用渐变色和不透明的颜色绘制的。但是使用上面的代码行可以使它透明

有人能告诉我这个“挫折背景(新颜色(0,0,0,0));”和我为JPanel设置的渐变颜色之间的关系吗。 提前准备好

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsDevice;
import java.awt.GraphicsDevice.WindowTranslucency;
import java.awt.GraphicsEnvironment;
import java.awt.Paint;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;


public class transparent extends JFrame {

public transparent() {
    super("Transparent Window");

    setBackground(new Color(0,0,0,0));//problem with this line

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(300,200);
    getContentPane().setLayout(new FlowLayout());

    JPanel jp=new JPanel(){
        public void paintComponent(Graphics g)
        {
            //super.paintComponent(g);
            Graphics2D g2=(Graphics2D)g;
            Paint gp=new GradientPaint(300, 700, new Color(20,20,210,0), 100, 00, new Color(10,20,40,255));
            g2.setPaint(gp);
            g2.fillRect(0, 0, getWidth(),getHeight());
        }
    };

    setContentPane(jp);
    JButton jbtn=new JButton("Enter");
    add(jbtn);
    setVisible(true);

}
public static void main(String[] args) {
    // TODO Auto-generated method stub

    JFrame.setDefaultLookAndFeelDecorated(true);

    SwingUtilities.invokeLater(new Runnable(){public void run(){new transparent();}});
}

}
颜色(0,0,0,0)是完全透明的,就像alpha分量(颜色构造函数中的第四个参数)设置为零的任何颜色一样

使用范围(0-255)内指定的红色、绿色、蓝色和alpha值创建sRGB颜色。 参数:
r-红色分量
g-绿色成分
b-蓝色组件
a-α分量

在计算机图形学中,alpha合成是将图像与背景相结合以创建部分或完全透明的外观的过程


当您将其设置为背景时,框架将变得透明!这是至关重要的,因为如果您的框架不是透明的,那么在顶部有一个透明的面板只能让您看穿这个面板并看到底层框架。使框架透明也让你看清背后的一切。

Thanx Donal,谢谢你的回答。但我不能只将透明渐变绘制添加到JPanel中,然后将其设置为JFrame的内容窗格。我想问题是,如果你只向JPanel添加透明度,然后您将看穿JPanel,只看到底层框架!通过使框架完全透明,当你看穿面板时,你也会看穿框架:我认为你说的是对的。有人能证实这一点或补充一个具体的答案吗。
public Color(int r, int g, int b, int a)