我在半透明的 JPanel 上放置了一个半透明的 JCheckBox 对象。当我将鼠标光标移到 JCheckBox 对象上时,它会在原始 JCheckBox 对象顶部重新绘制 JCheckBox 对象,这些对象与原始 JCheckBox 对象相比有几个单元格。
我想要它做的是在我将鼠标光标移到它上面后看起来完全一样。
之前(鼠标光标不在 JCheckBox 对象上):
之后(鼠标光标在 JCheckBox 对象上):
代码:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
class TransparentPanel extends JPanel{
public TransparentPanel(){
super();
setOpaque(false);
setBackground(new Color(0, 0, 0, 100));
JCheckBox checkBox=new JCheckBox("Check Box"){
protected void paintComponent(Graphics g){
g.setColor(getBackground());
g.fillRect(0, 0, getWidth(), getHeight());
super.paintComponent(g);
}
};
checkBox.setFocusable(false);
checkBox.setOpaque(false);
checkBox.setBackground(new Color(200, 200, 200, 50));
add(checkBox);
}
@Override
protected void paintComponent(Graphics g){
g.setColor(getBackground());
g.fillRect(0, 0, getWidth(), getHeight());
super.paintComponent(g);
}
public static void main(String[] args){
JFrame frame=new JFrame();
frame.setSize(200, 100);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TransparentPanel());
frame.setVisible(true);
}
}
对不起,如果这已经被问到了。我找遍了,我找不到有同样问题的人。如果这篇文章不是合法的 SSCCE,再次抱歉。这是我在这里的第一篇文章。
编辑1:编辑代码。问题依然存在。
编辑 2:代码现在可以工作了。