我将 JWindow 的背景设置为完全透明。然后我在它的paint-Method 中绘制了一个圆角矩形(RGB:0,0,0,100),并向JWindows ContentPane 添加了一个JLabel。但是,当我尝试重新绘制 JWindow 以更新 JLabel 时,它不会删除旧的 Rectangle 和 JLabel 的旧值。因此,结果是我的自定义工具提示框(它应该是什么)变得不太透明,并且您无法读取 JLabels 内容,因为它覆盖了旧内容。
有什么办法可以解决这个问题吗?
顺便说一句,如果我不重新绘制,它的透明度不会降低,但是 JLabel 的新内容会覆盖旧内容,就像我重新绘制时一样。
最佳答案
首先,您应该重写 paintComponent
而不是 paint
并调用 super.paintComponent(g)
。您应该让 JWindow 保持不透明,因为最后一层的组件会清除旧内容。如果所有图层都是透明的,您最终会出现屏幕垃圾。
参见painting with Swing 。也许您真的想创建translucent windows ?
关于java - JLabel 覆盖透明绘制的矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5231168/