Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8188238

Access to Windows Large Icons



    • CSR
    • Resolution: Approved
    • P3
    • 17
    • client-libs
    • None
    • behavioral
    • minimal
    • Java API
    • SE



      API sun.awt.shell.ShellFolder.getShellFolder(file).getIcon(getLargeIcon) in the sun package is now considered internal and is not exposed since Java-9 so a replacement API is added to Swing's FileSystemView.


      Customers requested ability to query higher resolution icon for files with functionality at least matching the functionality of the now inaccessible API.


      Add a new method to javax.swing.filechooser.FileSystemView that allows querying icon of the specific size. Method should return the icon of the best available quality based on the requested icon size associated with the specified file. Whenever possible we should return the multi resolution icon that can be used to display said icon on displays with different magnification factors.


      Webrev: https://openjdk.github.io/cr/?repo=jdk&pr=2875&range=06

      +   /**
      +    * Returns an icon for a file, directory, or folder as it would be displayed
      +    * in a system file browser for the requested size.
      +    * <p>
      +    * Example: <pre>
      +    *     FileSystemView fsv = FileSystemView.getFileSystemView();
      +    *     Icon icon = fsv.getSystemIcon(new File("application.exe"), 64, 64);
      +    *     JLabel label = new JLabel(icon);
      +    * </pre>
      +    *
      +    * @implSpec The available icons may be platform specific and so the
      +    * available sizes determined by the platform. Therefore an exact match
      +    * for the requested size may not be possible.
      +    *
      +    * The icon returned may be a multi-resolution icon image,
      +    * which allows better support for High DPI environments
      +    * with different scaling factors.
      +    *
      +    * @param f a {@code File} object for which the icon will be retrieved
      +    * @param width width of the icon in user coordinate system.
      +    * @param height height of the icon in user coordinate system.
      +    * @return an icon as it would be displayed by a native file chooser
      +    * or null for a non-existent or inaccessible file.
      +    * @throws IllegalArgumentException if an invalid parameter such
      +    * as a negative size or a null file reference is passed.
      +    * @see JFileChooser#getIcon
      +    * @see AbstractMultiResolutionImage
      +    * @see FileSystemView#getSystemIcon(File)
      +    * @since 17
      +    */
      +    public Icon getSystemIcon(File f, int width, int height) {
      +        // implementation omitted
      +        }
            * On Windows, a file can appear in multiple folders, other than its
            * parent directory in the filesystem. Folder could for example be the


        Issue Links



              kizune Alexander Zuev
              shadowbug Shadow Bug
              Alexander Zvegintsev, Alexey Ivanov
              0 Vote for this issue
              7 Start watching this issue