我有一个JLayeredPane,里面有2个JPanel。
顶部的那个有半透明的背景颜色:
this.setBackground(new Color(0, 0, 0, 150));
this.ghostPanel.setSize(width, height);
我的整个JPanel变成了灰色,但当我给它高度 - 1时,它会显示正确的透明视图。
this.ghostPanel.setSize(width, height - 1);
我真的不明白为什么会这样。我很想找到有效的解释! 提前谢谢!
答案 0 :(得分:2)
Swing组件是不透明或透明的,Swing不知道如何绘制具有基于alpha颜色的组件。
通过使用基于alpha的颜色,Swing不知道它应该在组件更新时绘制它下面的组件,所以你会得到一些奇怪的油漆文物
相反,让组件透明(setOpaque(false)
),然后覆盖它的paintComponent
方法并使用AlphaComposite
填充背景