使用自定义背景颜色时,摆动组件的重绘()错误

时间:2013-07-19 16:56:33

标签: java swing colors repaint jcheckbox

当我使用JCheckboxes或JScrollPane(应用于包含所有其他组件以生成可滚动窗口的主要组件)以及使用

的组件时
component.setBackground(new Color(R, G, B, A));

定义他们的背景颜色,我得到一些令人讨厌的重绘()问题。将鼠标悬停在JCheckbox上会激活MouseListener,JCheckbox的背景将突然显示窗口的随机其他部分。将鼠标从JCheckbox上移开时,这仍然存在。

使用

时问题消失
JCheckbox.setRollOverEnabled(false);

选择复选框时仍然会出现!

滚动窗格也无法正确重绘。只有当可见框架外部的部件在返回框架时,将在滚动方向上连续多次涂漆。当程序崩溃时,它看起来类似于Windows操作系统上的错误,并且您可以在屏幕上“绘制”窗口,因为每次移动它时它都会“生成”一个新窗口(http://i.stack.imgur.com/L5G5Q.png)。

最有趣的部分是当我使用

时问题完全消失
Color.grey (or any other pre-generated color)

根本不选择自定义背景颜色时也会消失。

那么revalidate()和repaint()隐藏在这里的任何地方都有问题吗?使用RGBA是一个问题,特别是A(=不透明)部分,因为Color.AnyColor有效吗?

1 个答案:

答案 0 :(得分:4)

  

使用RGBA是一个问题,特别是A(=不透明度)部分

是的,请参阅Backgrounds With Transparency以获取解释和解决方案。