java jpanel 透明背景_JLayeredPanes中的透明JPanel

博主试图在Java Swing中创建一个透明的JPanel,并将其放入JLayeredPane以实现底层可见。他们通过设置面板不透明和背景颜色为透明实现了基本的透明效果,但当在JLayeredPane中使用时,底层内容无法显示。问题可能是布局管理器或JLayeredPane的配置。博主寻求解决方案,希望能避免自定义布局并利用现有的布局管理器。
摘要由CSDN通过智能技术生成

我希望JPanel透明或完全不可见(不像panel.setVisible(false),但更像是opacity = 0.0f),然后将其放入JLayeredPane,以使底层可见 .

你知道问为什么 . 我需要这个使用像BorderLayout这样的Layouts中的构建,因为我不想制作自己的布局等等 .

我接下来尝试的是首先实现一个透明的JPanel,通过这样做或多或少容易:

public class ClearPanel extends JPanel {

private static final long serialVersionUID = 706731555521208974L;

private float opacity = 0.0f;

private Shape shape = null;

public ClearPanel() {

setBackground(new Color(0,0,0,0));

setOpaque(false);

}

public ClearPanel(float opacity) {

setOpaque(false);

setOpacity(opacity);

}

public ClearPanel(float opacity, Shape shape) {

setOpaque(false);

setOpacity(opacity);

setShape(shape);

}

// Here usually are some random getters and setters

@Override

public void paintComponent(Graphics go) {

Graphics2D g = (Graphics2D) go;

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

if(shape == null) shape = g.getClipBounds();

g.setColor(new Color(getBackground().getRed(), getBackground().getGreen(), getBackground().getBlue(), 255*opacity));

g.fill(shape);

}

}

所以这通常会创建一个或多或少透明的JPanel版本 . 如果不使用布局但固定位置和大小,它也可以工作,但是当你编写更大的东西时,使用可用的解决方案会更容易 .

问题出现了:当我尝试在JLayeredPane中使用它并且有可能看到底层时,没有任何反应,虽然我应该需要这个,因为我想要一个带有背景图像的底部面板然后我想要一些东西上面那个小组 . 我想,好吧,我知道Gimp的Layers,也许Java提供了这个,所以这就是为什么我认为JLayeredPane可以提供帮助 .

虽然您使用固定布局或者您认为我是否需要制作自己的布局或使用 public void paint(Graphics g) 的JFrame来逐步绘制它们,您是否知道底层层可以通过其他层闪耀?

提前致谢

PS:Sry我的英语,但经过一天的尝试和错误,我不能写任何“完美”的东西了...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值