我将JWindow的背景设置为完全透明。然后我在它的paint-Method中绘制了一个圆角矩形(RGB:0,0,0,100)并将JLabel添加到JWindows ContentPane。但是当我尝试重新绘制JWindow以更新JLabel时,它不会删除旧的Rectangle和JLabel的旧值。结果是我的自定义工具提示框(应该是什么)变得不那么透明,你无法读取JLabels内容,因为它覆盖旧的竞争。
有什么方法可以解决这个问题吗?
顺便说一句,如果我不重画,它的透明度就会降低,但是当我重新绘制时,我的JLabel的新内容会覆盖旧的内容,就像它一样。
答案 0 :(得分:1)
首先,您应该覆盖paintComponent
而不是paint
并致电super.paintComponent(g)
。你应该让JWindow不透明,因为最后层的组件将清除旧内容。如果所有图层都是透明的,那么最终会出现屏幕垃圾。
见painting with Swing。也许你真的想创建translucent windows?