为什么我的JPanel看起来是灰色的,但不是另一个?

时间:2015-10-01 20:01:28

标签: java swing colors jpanel jlayeredpane

我有一个JLayeredPane,里面有2个JPanel。

顶部的那个有半透明的背景颜色:

this.setBackground(new Color(0, 0, 0, 150));

现在,当我将此JPanel的大小设置为等于帧的大小时 enter image description here`

this.ghostPanel.setSize(width, height);

我的整个JPanel变成了灰色,但当我给它高度 - 1时,它会显示正确的透明视图。

correct displaying view

this.ghostPanel.setSize(width, height - 1);

我真的不明白为什么会这样。我很想找到有效的解释! 提前谢谢!

1 个答案:

答案 0 :(得分:2)

Swing组件是不透明或透明的,Swing不知道如何绘制具有基于alpha颜色的组件。

通过使用基于alpha的颜色,Swing不知道它应该在组件更新时绘制它下面的组件,所以你会得到一些奇怪的油漆文物

相反,让组件透明(setOpaque(false)),然后覆盖它的paintComponent方法并使用AlphaComposite填充背景