Доступ к значкам типов файлов Mac OSX - PullRequest
2 голосов
/ 17 июля 2009

Я пытаюсь найти способ доступа к системным значкам Mac OSX. Кто-нибудь знает их расположение по умолчанию на Mac? Или знаете способ использования Java для их возврата?

Существует метод использования JFileChooser для Mac для извлечения Icon для файла, но файл должен существовать в файловой системе (в моем приложении файл может быть потоковым с сервера, поэтому для создания фиктивного файла не требуется система с таким расширением не будет работать).

Я могу получить к ним доступ в Windows следующим образом, используя SWT (но это бомбы на 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 в сети и связал их с моим приложением, чтобы просто использовать getRecourceAsStream () на Mac, пока не будет найдено лучшее решение.

Ответы [ 3 ]

3 голосов
/ 20 апреля 2010

Уже поздно, но, может быть, кто-то другой будет искать такую ​​же проблему (как я).

Трюк FileSystemView работает только для изображений 16x16 на всех платформах. На Mac вам нужно использовать внешний вид Aqua по умолчанию, чтобы он работал.

Для Windows вы можете использовать ShellFolder.getShellFolder (файл) .getIcon (true), чтобы получить значок 32x32.

Для Mac вы можете использовать Quaqua, который поставляется с некоторыми библиотеками Objective-C jni, которые дают вам желаемый / доступный размер значков для любого файла (16px, 32, 64, 128, 256, 512): http://www.randelshofer.ch/quaqua/javadoc/ch/randelshofer/quaqua/osx/OSXFile.html#getIcon%28java.io.File,%20int%29

2 голосов
/ 31 декабря 2012

В OS X FileView работает намного лучше, чем FileSystemView . Я использую следующее для получения значков для файлов:

final JFileChooser fc = new JFileChooser();
//return fc.getFileView().getIcon(f); // will throw a  null pointer
Icon result = fc.getUI().getFileView(fc).getIcon(f);
0 голосов
/ 17 июля 2009

Я думаю, FileSystemView и его друзья обеспечивают способ получения значков файлов.

...