java - 自定义 JLabel 图标

标签 java swing user-interface jlabel imageicon

我想在我的 GUI 上使用带有自定义大小图标的 java 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;
}    

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

enter image description here

我怎样才能在我的 JLabel 上获得所需的图像??

问候, 萨贾德

最佳答案

问题是当您创建缩放图像时,您使用 BufferedImage.TYPE_INT_RGB对于您的新图像,透明度仅使用 TYPE_INT_RGB 呈现为黑色.

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

但是,调用 Image.getScaledInstanceimageIcon的图像将返回一个缩放图像,已经有一个 alpha 组件,您可以将渲染提示传递给它以使用缩放图像的质量,与您的 getScaledImage 基本相同。功能,但麻烦更少。

关于java - 自定义 JLabel 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4847129/

相关文章:

尝试删除形状时出现 JavaFX 错误

java - 不确定的进度条不会显示

android - 显示大小从系统设置更改影响我的布局奥利奥

java - Fetch:如何添加Listener?

java - JButton 数组的 Action 监听器

java - 比较模式字符串

java - JScrollPane adjustmentListener 和 scrollRectToVisible

java - 如何使用JAVA JFrame移动对象?

user-interface - STS(Spring 工具套件)2.7.2 @RequestMappings View 不显示

c# - 如何管理具有大量可变输入文本字段集的 WinForm?