Ich erstelle eine JNI, um eine anwendungsweite Menüleiste anstelle der JFrame-spezifischen anzuzeigen. Dadurch kann ich eine Menüleiste anzeigen lassen, auch wenn keine JFrames vorhanden sind. Ich habe ein kleines Problem, in meinem Fenster-Menü kann ich nicht herausfinden, wie man einen Diamanten für die Fenster, die minimiert sind anzuzeigen. Soweit ich weiß, gibt es in der Standard-API nur drei Zustände: On, Off und Mixed, wobei Mixed ein Bindestrich ist. Gibt es eine Möglichkeit, die minimierte Raute mit der Standard-API anzuzeigen? Oder muss ich ein Rautenbild erstellen und dieses verwenden?
Antwort
Zu viele Anzeigen?AppKit verwendet keine öffentliche API, um dieses Bild zu erhalten. Es ist mit _NSGetThemeImage, die ein Bild aus dem alten HIToolbox Appearance Manager Thema Ressourcen zieht und konvertiert es ein NSImage. Ich war nicht in der Lage, eine entsprechende öffentliche API zu finden.
Wenn Sie nachahmen wollen, wie AppKit das macht, verwenden Sie:
NSImage* _NSGetThemeImage(int num);
[menuitem setState:NSOnState];
[menuitem setOnStateImage:_NSGetThemeImage(155)];
Besser noch: Verwenden Sie diesen Code, um das NSImage zu erfassen, es in einer TIFF-Datei zu speichern und diese TIFF-Datei dann in Ihr Programm einzubinden. Auf diese Weise vermeiden Sie die Verwendung privater APIs im Versandcode. Ich bezweifle, dass Apple sich beschweren würde, dass Sie ihren Diamanten stehlen ;)