当我使用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有效吗?