自定义JLabel图标
我想在我的GUI上使用带有自定义大小的Icon的JLabel。 喜欢这个 :
我用这段代码来改变原始图标的大小:
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
函数基本相同少了麻烦。
上一篇: Custom JLabel icon
下一篇: How to add Mouse listener to an ImageIcon embedded in a JLabel?