我有这个小标志,我正在使用默认JButton上的图标。但是当我加载时,它保留了它在JButton的蓝色背景上显示的白色框(至少对我来说这是颜色)。我想知道如何去除这种白色。如何从JButton图标中删除白色
1
A
回答
4
当然,悉达多尚卡尔提供了正确的答案,mKorbel提出了一个很好的(横向思维)替代方案,但我不得不张贴这只是因为'我们有技术'。 ;)
import java.awt.image.BufferedImage;
import java.awt.*;
import javax.swing.*;
import java.net.URL;
import javax.imageio.ImageIO;
class TransparentIcon {
public static void main(String[] args) throws Exception {
URL url = new URL("http://i.stack.imgur.com/DD7gI.gif");
final BufferedImage bi = ImageIO.read(url);
final BufferedImage tr = new BufferedImage(
bi.getWidth(),
bi.getHeight(),
BufferedImage.TYPE_INT_ARGB);
Color cTrans = new Color(255,255,255,0);
for (int x=0; x<bi.getWidth(); x++) {
for (int y=0; y<bi.getHeight(); y++) {
Color c = new Color(bi.getRGB(x,y));
Color cNew = (c.equals(Color.WHITE) ? cTrans : c);
tr.setRGB(x,y,cNew.getRGB());
}
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JPanel p = new JPanel(new GridLayout(1,0,5,5));
p.add(new JButton(new ImageIcon(bi)));
p.add(new JButton(new ImageIcon(tr)));
JOptionPane.showMessageDialog(null, p);
}
});
}
}
顺便说一句 - 您可以通过使用ImageIO.write()
,利用这些把戏形成的图像结合我与悉达多的建议。
3
也许你只想显示Icon和集myButton.setContentAreaFilled(false)从JButton除去休息,为example
您需要创建一个“透明”图标。 – eternaln00b 2012-02-09 04:36:19
@SiddharthaShankar你应该将其作为答案发布。 – 2012-02-09 06:29:25
@AndrewThompson深夜,我很懒。 :)感谢您发布全面而全面的答案。 *竖起大拇指* – eternaln00b 2012-02-09 12:27:09