Swing JLabel 图标:对所有分辨率使用相同的图像

问题描述 投票:0回答:0

我知道他们有很多论坛都在谈论这个,但我的问题是我有一个带有图标的 JLabel,当分辨率为 <> 100% 时我不想缩放它! IE。 (抱歉,法语):

最初,我将 JLabel 图标设置为:

lblImage.setIcon( getNoteIcon() );

//...

ImageIcon getNoteIcon(){
    return new ImageIcon( getClass().getResource('path/to/file.png') );
}

这个结果是当 HiDPI 分辨率设置为高于 100% 时,我的图像显示模糊。例子:

100%:

在 150% 时:

你可以看到音符图像在 150% 分辨率下更加模糊。

我想要什么:我不希望它放大或缩小图像!我想保持原始尺寸,除非我可以为各种分辨率提供不同的图像尺寸。

话虽如此,我查看并尝试使用 BaseMultiResolutionImage 类来处理分辨率,传递“相同大小图像”的数组,但是当我更改分辨率时得到相同的结果。这是我试过的代码:

ImageIcon getNoteIcon(){
    List<Image> imgList = new ArrayList<Image>();

    /* all images are width = 108 height = 83 */
    imgList.add(ImageIO.read(new File('path/to/file.png'))); // 100%
    imgList.add(ImageIO.read(new File('path/to/file.png'))); // 125%
    imgList.add(ImageIO.read(new File('path/to/file.png'))); // 150%
    imgList.add(ImageIO.read(new File('path/to/file.png'))); // 175%
    imgList.add(ImageIO.read(new File('path/to/file.png'))); // 200%

    BaseMultiResolutionImage multiResolutionImage = new BaseMultiResolutionImage(imgList.toArray(new Image[0]));

    return new ImageIcon(
        multiResolutionImage
    );
}

我不明白我做错了什么,或者我什至没有正确使用 BaseMultiResolutionImage。最后,如果我确实设法为 3 种分辨率提供 3 种不同的图像(即 100、125、150%),有没有办法告诉它在我没有给定图像时使用的“默认”图像分辨率(即 200%)?

任何人都可以阐明这一切吗?似乎我很困惑,只是为了让图像不在我的窗口中缩放......

非常感谢! 帕特

java swing imageicon hidpi
© www.soinside.com 2019 - 2024. All rights reserved.