Java 在部分透明的JPanel上绘制jComponent

Java 在部分透明的JPanel上绘制jComponent,java,swing,jpanel,opacity,paintcomponent,Java,Swing,Jpanel,Opacity,Paintcomponent,我有一个带鼠标听筒的JLabel,看起来像链接。因此,如果您将鼠标悬停在其上,颜色会发生变化 @Override public void mouseEntered(MouseEvent e){ setForeground(new Color(255,134,0)); } 此JLabel位于仅部分透明的JPanel上 panel.setBackground(new Color(255,255,255,100)); 当我将鼠标悬停在链接上时,它会像应该的那样改变颜色,但透明的背景会出现“

我有一个带鼠标听筒的JLabel,看起来像链接。因此,如果您将鼠标悬停在其上,颜色会发生变化

@Override
public void mouseEntered(MouseEvent e){
    setForeground(new Color(255,134,0));
}
此JLabel位于仅部分透明的JPanel上

panel.setBackground(new Color(255,255,255,100));
当我将鼠标悬停在链接上时,它会像应该的那样改变颜色,但透明的背景会出现“小故障”。它使文本区域的背景为白色,并且在白色区域上还有一些随机字母。当我重新调整窗口的尺寸时,这种情况就会消失,很明显,一种特定的油漆被称为正确地重新油漆该部分

我的问题是我调用了JFrame和JFrame中的每一个绘画方法,但是背景仍然有问题。那么,有没有其他方法可以做到这一点,或者我做错了


谢谢

您必须将背景面板更改为“透明”(
setOpaque(false)
),这可能需要覆盖
paintComponent
方法并用背景色填充它。这样,重绘管理器就知道它需要在下面绘制组件;此外,还要考虑恒定颜色。您必须将背景面板更改为“透明”(
setOpaque(false)
),这可能需要覆盖
paintComponent
方法,并用背景颜色填充它。这样,重绘管理器就知道它需要在下面绘制组件;此外,还要考虑到恒定的颜色。