我想在我的 GUI 上使用带有自定义大小图标的 java 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 上获得所需的图像??
问候, 萨贾德
最佳答案
问题是当您创建缩放图像时,您使用 BufferedImage.TYPE_INT_RGB
对于您的新图像,透明度仅使用 TYPE_INT_RGB
呈现为黑色.
为了保持透明度,您需要将其替换为 BufferedImage.TYPE_INT_ARGB
,因为您需要一个 alpha 组件。
但是,调用 Image.getScaledInstance在 imageIcon
的图像将返回一个缩放图像,已经有一个 alpha 组件,您可以将渲染提示传递给它以使用缩放图像的质量,与您的 getScaledImage
基本相同。功能,但麻烦更少。
关于java - 自定义 JLabel 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4847129/