我有以下问题:
我有自己的JPanel实例来创建一个ImageButton。 当我设置背景时,它会自动添加颜色渐变,这会导致透明图像的背景与我的JFrame颜色不符。
如何删除此渐变?
public ImageButton(Runnable exec, boolean on) {
super();
setBackground(new Color(238,238,238));
setVisible(false);
switched_on = on;
setSize(new Dimension(64, 64));
setPreferredSize(new Dimension(64, 64));
if(on) {
img = ImageButton.on;
}else{
img = ImageButton.off;
}
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img, 0, 0, null);
}
屏幕截图:ImageButton
另一个屏幕截图,您可以更好地看到渐变
答案 0 :(得分:2)
当我设置背景时,它会自动添加颜色渐变,这会导致透明图像的背景与我的JFrame颜色不符。
使面板透明:
setOpaque( false );
现在图像和面板都是透明的,因此背景颜色将是ImagePanel的父组件的背景。
虽然更简单的方法是使用JLabel
。默认情况下,JLabel
是透明的。然后,您可以使用setIcon(...)
方法更改图像。因此不需要自定义绘画或自定义组件。
答案 1 :(得分:0)
我终于找到了问题。我试图在我的源代码中找到此错误,但相反,图像本身左上角有一个带白色的背景。