访问文件类型图标Mac OSX

时间:2009-07-17 17:50:44

标签: java macos system icons

我正在尝试找到一种访问Mac OSX系统图标的方法。有没有人知道他们在Mac上的默认位置?或者知道使用Java将它们返回的方法?

有一种方法可以使用JFileChooser for Mac来检索文件的图标,但该文件必须存在于文件系统上(在我的应用程序中,文件可能是从服务器流式传输而不是创建一个虚拟文件具有该扩展的系统不会起作用。)

我可以使用SWT以下列方式在Windows上访问它们(但这是Mac上的炸弹)。例如,下面的变量“fileType”是“.txt”,“。bmp”,“。doc”等:

Program p;
            Image image;

            //find the correct OS image for the file type and set
            //the image to the tree item
            p = Program.findProgram(fileType);
            ImageData data = p.getImageData();
            image = new Image(display, data);

更新:似乎没有明确的方法来导入这些。我最终在网上找到了一些通用的Mac图标,并将它们与我的应用程序捆绑在一起,只需在Mac上使用getRecourceAsStream(),直到找到更好的解决方案。

3 个答案:

答案 0 :(得分:3)

已经很晚了,但是也许其他人会搜索同样的问题(像我一样)。

FileSystemView技巧仅适用于所有平台上的16x16图像。在Mac上,您需要使用默认的Aqua外观以使其正常工作。

对于Windows,您可以使用ShellFolder.getShellFolder(文件).getIcon(true)来获取32x32图标。

对于Mac,您可以使用一些Objective-C jni库附带的Quaqua,它为您提供任何文件(16px,32,64,128,256,512)所需/可用的图标大小: http://www.randelshofer.ch/quaqua/javadoc/ch/randelshofer/quaqua/osx/OSXFile.html#getIcon%28java.io.File,%20int%29

答案 1 :(得分:2)

在OS X上,FileViewFileSystemView工作得更好。我正在使用以下内容获取文件图标:

final JFileChooser fc = new JFileChooser();
//return fc.getFileView().getIcon(f); // will throw a  null pointer
Icon result = fc.getUI().getFileView(fc).getIcon(f);

答案 2 :(得分:0)

我认为FileSystemView及其朋友提供了获取文件图标的方法。