Java 9 hdpi display support - multi-resolution images - name convention and loading in Windows

戏子无情 提交于 2019-11-29 01:00:29

As part of HiDPI support, Java 9 introduced multi-resolution support via the java.awt.MultiResolutionImage interface and the java.awt.image.AbstractMultiResolutionImage et al classes. Although they're supported in Swing, there have been bugs and misunderstandings in this area.

Those don't exist in earlier Java versions, so if you want your users to be able to continue to run with earlier runtimes, you're going to have to write code to use regular Image classes when running on earlier JREs.

To use those, you do something like:

  • Start with a set of images are different resolutions:

  • Then create and load the MultiResolutionImage:

    List<Image> imgList = new ArrayList<Image>();
    imgList.add(ImageIO.read(new File("320px-Eagle.jpg"));
    imgList.add(ImageIO.read(new File("800px-Eagle.jpg"));
    imgList.add(ImageIO.read(new File("1024px-Eagle.jpg"));
    imgList.add(ImageIO.read(new File("1280px-Eagle.jpg"));
    imgList.add(ImageIO.read(new File("Eagle.jpg"));
    MultiResolutionImage mrImage = new BaseMultiResolutionImage(imgList.toArray(new Image[0]));
    
  • The use the mrImage object just like any other image.

There's nothing automatic about the naming convention: The image resolution is taken from the image file contents.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!