首先,java是不支持ico图标的
例如,我的D盘有一个a.pdf文件,操作系统默认显示了图标,如图
当然,这个a.pdf是我新建的a.txt然后改后缀得到的
现在我想在java中也获取到这个pdf的图标,效果如下:
这样的话,我们没有必要准备一系列的图标了,需要哪个文件类型的系统图标,临时建一个空文件,获取图标即可
当然,也可以把获取到的图标保存成java能识别的文件类型
上代码:
import javax.swing.*;
import java.io.*;
public class LargeIconTest {
public static void main(String[] args) throws Exception {
// Create a File instance of an existing file
File file = new File("D:/a.pdf");
// Get large icon
sun.awt.shell.ShellFolder sf = sun.awt.shell.ShellFolder.getShellFolder(file);
Icon icon = new ImageIcon(sf.getIcon(true));
System.out.println("type = " + sf.getFolderType());
// show the icon
JLabel label = new JLabel(icon);
JFrame frame = new JFrame();
frame.getContentPane().add(label);
frame.pack();
frame.show();
}
}
当然,还有一种简单方法,不过获取到的是小图标
FileSystemView fsv=new JFileChooser().getFileSystemView();
Icon icon=fsv.getSystemIcon(new File("D:/a.pdf"));