get System-File-Icons (nur bis Java 8)

Veröffentlicht von

Hier mal eine Methode, wie man an die SystemFileIcons kommt, um die Icons in einem TreeView oder ListView zu verwenden.

Achtung: läuft nicht mehr ab Java 9

Dazu benötigt man diese Library -> Download 1 oder Download 2

	private Image getSystemIcon(File file)  {

                ShellFolder sf = null;
		try {
			sf = ShellFolder.getShellFolder(file);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

		// Get large icon
		ImageIcon ico = new ImageIcon(sf.getIcon(true), sf.getFolderType());
		java.awt.Image awtImage = ico.getImage();
		
		BufferedImage bImg ;
		if (awtImage instanceof BufferedImage) {
		    bImg = (BufferedImage) awtImage ;
		} else {
		    bImg = new BufferedImage(awtImage.getWidth(null), awtImage.getHeight(null), BufferedImage.TYPE_INT_ARGB);
		    Graphics2D graphics = bImg.createGraphics();
		    graphics.drawImage(awtImage, 0, 0, null);
		    graphics.dispose();
		}
		
		Image fxImage = SwingFXUtils.toFXImage(bImg, null);
   			
//		System.out.println("Icon-Breite: " + fxImage.getWidth() + "  -  Icon-Höhe: " + fxImage.getHeight());
		
		return fxImage;

	}