如何将透明png设置为JButton?

时间:2012-07-27 12:12:19

标签: java swing jbutton

我正在使用swing制作java桌面应用程序。我想把png设置为jbutton。但我无法设置透明图像。我想像设置背景null一样在android中这样做,所以可以设置透明图像。

4 个答案:

答案 0 :(得分:8)

试试这个:

button.setOpaque(false);
button.setContentAreaFilled(false);
button.setBorderPainted(false);

答案 1 :(得分:3)

尝试button.setIcon(new ImageIcon(ImageIO.read(new File("path/to/image.png"))))

答案 2 :(得分:2)

ImageIcon cup = new ImageIcon(“images / cup.png”);     JButton button2 =新的JButton(杯子);

这对你有帮助。有关更多信息,请单击此链接

Jbutton Tutorial

Jbutton Class

答案 3 :(得分:1)

要使用透明PNG创建JButton,请使用:

JButton jButton1 = new JButton(new ImageIcon(ImageIO.read(new File("yourImage.png")  

要使用缩放透明PNG创建JButton,我使用:

ImageIcon image = new ImageIcon("yourImage.png") 
JButton jButton1 = new JButton(new ImageIcon(getScaledImage(icon.getImage(), 32, 32)));


/**
 * Resizes an image using a Graphics2D object backed by a BufferedImage.
 * @param srcImg - source image to scale
 * @param w - desired width
 * @param h - desired height
 * @return - the new resized image
 */
private Image getScaledImage(Image srcImg, int w, int h){
    BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TRANSLUCENT);
    Graphics2D g2 = resizedImg.createGraphics();
    g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    g2.drawImage(srcImg, 0, 0, w, h, null);
    g2.dispose();
    return resizedImg;
}

然后,如果您不想使用可见的边框:

jButton1.setOpaque(false);
jButton1.setBorderPainted(false);
jButton1.setContentAreaFilled(false);