java - JLabel 覆盖透明绘制的矩形?

标签 java transparency paint repaint jwindow

我将 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/

相关文章:

html - 具有透明颜色覆盖的背景图像上的 mask 元素

Java如何从另一种方法在JPanel上绘图?

iphone - 在 iPhone 中裁剪具有透明度的图像

android - drawLines 方法在缩放的 Canvas 上产生奇怪的效果

android - 如何在特定区域填充图像中的颜色?

java - XSLT 2.0 - 迭代 Java 对象列表

java - findbugs 显示 sessionFactory 为 null 保证被取消引用

java - 无法附加到 java 中的文本文件。可以创建 .txt 文件并添加数据,但会被覆盖

java - 一个 Java applet 中的两个线程最佳实践

java - 如何获得透明的JFrame?