1

我将 JWindow 的背景设置为完全透明。然后我在它的paint-Method 中绘制了一个圆角矩形(RGB:0,0,0,100),并在JWindows ContentPane 中添加了一个JLabel。但是当我尝试重新绘制 JWindow 以更新 JLabel 时,它不会删除旧的 Rectangle 和 JLabel 的旧值。所以结果是我的自定义工具提示框(它应该是什么)变得不那么透明,并且您无法读取 JLabels 内容,因为它覆盖了旧的内容。

有没有办法解决这个问题?

顺便说一句,如果我不重新绘制,它不会变得不那么透明,但是当我重新绘制时,我的 JLabel 的新内容会覆盖旧内容,就像它一样。

4

1 回答 1

1

首先,您应该覆盖paintComponent而不是paint调用super.paintComponent(g). 你应该让 JWindow 不透明,因为最后一层的组件会清除旧的内容。如果所有图层都是透明的,那么最终会出现屏幕垃圾。

请参阅使用 Swing 绘画。也许您真的想创建半透明的窗户

于 2011-03-08T10:41:49.333 回答