自定义JLabel图标

我想在我的GUI上使用带有自定义大小的Icon的JLabel。 喜欢这个 :

http://i.stack.imgur.com/XVglU.png

我用这段代码来改变原始图标的大小:

    ImageIcon imageIcon = (ImageIcon) jLabel1.getIcon();// new ImageIcon( "Play-Hot-icon.png");

    ImageIcon thumbnailIcon = new ImageIcon(getScaledImage(imageIcon.getImage(), 25 , 25));
    jLabel1.setIcon(thumbnailIcon);

这里是调整图像大小的代码

private Image getScaledImage(Image srcImg, int w, int h){

    BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
    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;
}    

但在调整图像大小并使用此代码后,结果就是这样! :

我如何在我的JLabel上获得想要的图像?

问候,sajad


问题是,当您创建缩放图像时,您会为新图像使用BufferedImage.TYPE_INT_RGB ,透明度只会以TYPE_INT_RGB呈现为黑色。

为了保持透明度,您需要将其替换为BufferedImage.TYPE_INT_ARGB ,因为您需要一个alpha组件。

然而,在imageIcon的图像上调用Image.getScaledInstance将返回一个已缩放的图像,已经有一个alpha组件,并且您可以将其渲染为缩放图像的质量,与getScaledImage函数基本相同少了麻烦。

链接地址: http://www.djcxy.com/p/67657.html

上一篇: Custom JLabel icon

下一篇: How to add Mouse listener to an ImageIcon embedded in a JLabel?