Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建透明的JPanel_Java_Swing - Fatal编程技术网

Java 如何创建透明的JPanel

Java 如何创建透明的JPanel,java,swing,Java,Swing,我试图使我的JPanel透明,但我就是无法做到这一点。我已经尝试过这个代码,但它不起作用。另外,rgba的“a”的界是什么 import java.awt.*; import java.awt.event.*; import java.io.IOException; import javax.swing.*; import javax.swing.plaf.LayerUI; public class Animation extends JPanel implements Runnable

我试图使我的JPanel透明,但我就是无法做到这一点。我已经尝试过这个代码,但它不起作用。另外,rgba的“a”的界是什么

import java.awt.*;
import java.awt.event.*;
import java.io.IOException;

import javax.swing.*;
import javax.swing.plaf.LayerUI;


public class Animation extends JPanel implements Runnable
    JButton buton = new JButton("BUTTON!!!! ");


    public Animation(){
        add(buton);

    }
        public void paintComponent(Graphics g) {
            g.setColor(getBackground());
            Rectangle r = g.getClipBounds();
            g.fillRect(r.x, r.y, r.width, r.height);
            super.paintComponent(g);

    }


    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JPanel panel = new Animation();
        panel.setOpaque(false);
        panel.setBackground(new Color(52, 152, 219,0));
        panel.repaint();
        frame.add(panel);
        frame.setVisible(true);
        frame.setSize(1000,400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ;
看这个

frame.setBackground(new Color(0,0,0,0)); //
//添加到代码中

   frame.setUndecorated(true);
   frame.setOpacity(0.5f);
您可以对JFrame使用相同的设置:实际上是将trasparent颜色设置为panel或frame。必须先取消装饰(true)框架

您也可以将其设置为0

这是

  • 您的
    JPanel
    是透明的,但是您看到的是
    JFrame

    你也需要让它透明。(
    JFrame
    要求首先调用
    frame.setUndercorated(true);


  • alpha的边界取决于所使用的
    颜色的构造函数

    有许多重载构造函数可用。您正在使用的函数需要一个
    int
    ,其边界为0-255

    具有
    float
    参数的构造函数需要0f到1.0f的边界

  • 希望这有帮助。

    祝你好运。

    alpha通道(“a”)的边界通常为0.0到1.0,其中1.0是不透明的。把它当作一个百分比。几个月前我也遇到过同样的问题,当我找到我展示给你的页面时,它只是许多其他问题的解决方案,比如创建带形状的窗口。。。。!