Как указать отображение алмаза в NSMenuItem (свернутый индикатор окна)? - PullRequest
2 голосов
/ 06 августа 2010

Я создаю JNI для отображения широкой панели меню приложения вместо конкретной JFrame.Это позволяет мне отображать меню, даже когда JFrames отсутствуют.Я наткнулся на небольшую загадку, в моем меню окон я не могу понять, как отобразить ромб для свернутых окон.Насколько я могу судить, в стандартном API доступны только три состояния: «Вкл», «Выкл» и «Смешанный», где «смешанный» - это тире.Есть ли способ показать свернутый бриллиант с помощью стандартного API?Или мне придется создать алмазное изображение и использовать его?

1 Ответ

5 голосов
/ 09 августа 2010

AppKit не использует публичный API для получения этого изображения. Он использует _NSGetThemeImage, который извлекает изображение из старых ресурсов темы HIToolbox Appearance Manager и преобразует его в NSImage. Я не смог найти эквивалентный публичный API.

Если вы хотите имитировать, как это делает AppKit, используйте:

NSImage* _NSGetThemeImage(int num);

[menuitem setState:NSOnState];
[menuitem setOnStateImage:_NSGetThemeImage(155)];

Еще лучше: используйте этот код, чтобы получить NSImage, сохранить его в файл TIFF, а затем включить этот TIFF в свою программу. Таким образом, вы избегаете использования частных API в коде доставки. Я сомневаюсь, что Apple будет жаловаться, что ты крадешь их бриллиант. ;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...