我试图让我的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);
;
答案 0 :(得分:1)
看这个..
frame.setBackground(new Color(0,0,0,0)); //
//添加到代码
frame.setUndecorated(true);
frame.setOpacity(0.5f);
您可以对JFrame使用相同的内容:实际上是将面板或框架设置为trasparent颜色。框架必须首先是Undecorated(true)。
您也可以将 alpha 设置为0。
答案 1 :(得分:1)
您的JPanel
是透明的,但您看到JFrame
。
你也需要让它变得透明。 (JFrame
要求首先调用frame.setUndecorated(true);
。
alpha的范围取决于您正在使用的Color
的构造函数。
有许多重载的构造函数可用。你正在使用的那个期望int
,其界限是0-255。
带float
参数的构造函数需要0f到1.0f的边界。
希望这有帮助。
祝你好运。