如何创建透明的JPanel

时间:2015-02-10 18:11:04

标签: 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
    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);
        ;

2 个答案:

答案 0 :(得分:1)

看这个..

frame.setBackground(new Color(0,0,0,0)); //

//添加到代码

   frame.setUndecorated(true);
   frame.setOpacity(0.5f);

您可以对JFrame使用相同的内容:实际上是将面板或框架设置为trasparent颜色。框架必须首先是Undecorated(true)。

您也可以将 alpha 设置为0。

这是the magic by oracle

答案 1 :(得分:1)

  1. 您的JPanel是透明的,但您看到JFrame

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


    1. alpha的范围取决于您正在使用的Color的构造函数。

      有许多重载的构造函数可用。你正在使用的那个期望int,其界限是0-255。

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

    2. 希望这有帮助。
      祝你好运。