【问题标题】:Why does my JPanel look gray with a certain size but not with another?为什么我的 JPanel 在某个尺寸下看起来是灰色的,而在另一个尺寸下却不是?
【发布时间】:2015-12-29 23:56:51
【问题描述】:

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

顶部的背景颜色是半透明的:

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

现在,当我将此 JPanel 的大小设置为等于框架的大小时 `

this.ghostPanel.setSize(width, height);

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

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

我真的不明白为什么会发生这种情况。我很想找到一个有效的解释! 提前致谢!

【问题讨论】:

  • 您能否发布一个突出这一现象的最小示例?
  • 图片不是代码示例。发布适当的SSCCE 来演示问题。我们不知道您如何构建面板的上下文或宽度/高度变量的值是什么等...并且知道我们不想要整个游戏,只有两个面板,一个代表游戏和其他代表透明面板。

标签: java swing colors jpanel jlayeredpane


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-03-09
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 2019-08-31
    • 2020-12-26
    • 2020-11-15
    相关资源
    最近更新 更多