如何获取另一个应用程序的图标?

12

在我制作的这个应用程序中,用户点击一个按钮,该按钮启动一个程序。这个按钮将具有应用程序的标题和图标。我只需要知道如何获取图标,类似于这样:Windows http://goo.gl/5WjdT

因此,我想知道以下内容:

  1. Java中是否有任何真正的方法来实现这一点?
  2. 如果有,你会怎么做?

提前感谢!

2个回答

9
您可以简单地使用FileSystemView来实现此目的:
public static void main(String[] args) {
    Icon icon = FileSystemView.getFileSystemView()
         .getSystemIcon(new File("C:\\Windows\\regedit.exe"));
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(new JLabel(icon));
    frame.pack();
    frame.setVisible(true);
}

9
你是否需要获取与应用程序的exe文件相关联的图标?如果是这样,Java可以实现此功能,请查看这篇教程,其中介绍了从Java应用程序中提取可执行二进制文件的多种方法。
请查看以下代码:
String s = "c:/windows/regedit.exe";
File file = new File(s);

// Get metadata and create an icon
sun.awt.shell.ShellFolder sf =
        sun.awt.shell.ShellFolder.getShellFolder(file);
Icon icon = new ImageIcon(sf.getIcon(true));

谢谢!你提供了教程并给出了示例!如果可以的话,我会点赞的! - mattbdean
4
注意:sun.* 包中的类通常不是公开 API,并且可能会在每个 JDK 版本中更改。 - Puce
sun.awt.shell 只存在于 Java 7 中。 - TiyebM
1
使用 Icon icon = FileSystemView.getFileSystemView().getSystemIcon(f); - TiyebM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接