2010-08-06 7 views
2

JFrame 전용 대신 응용 프로그램 전체 메뉴 모음을 표시하기 위해 JNI를 만듭니다. 따라서 JFrames가없는 경우에도 메뉴 모음을 계속 표시 할 수 있습니다. 나는 창문 메뉴에서 작은 걸림돌을 쳤다. 최소화 된 창에 대해 다이아몬드를 표시하는 방법을 알 수 없다. 표준 API에서 말할 수있는 한, On, Off 및 Mixed 중에서 대시가 혼합 된 세 가지 상태 만 있습니다. 표준 API를 사용하여 최소화 된 다이아몬드를 표시하는 방법이 있습니까? 아니면 다이아몬드 이미지를 만들어 사용해야 할 것인가?NSMenuItem (최소화 된 창 표시)에 다이아몬드를 표시하려면 어떻게 지정합니까?

+0

NSMenu 또는 일부 Java 메뉴 API를 사용하고 있습니까? –

+0

NSMenu. 나는 자바 물건의 대부분이 부적절하다고 생각한다. 나는 창 메뉴를 다루는 코코아를 사용할 수 없다는 것을 분명히하고 싶었다. – Jonathon

답변

5

AppKit에서이 이미지를 가져 오기 위해 공개 API를 사용하고 있지 않습니다. 그것은 _NSGetThemeImage를 사용하고 있습니다.이 이미지는 이전의 HIToolbox Appearance Manager 테마 리소스에서 이미지를 가져 와서 NSImage로 변환합니다. 동등한 공개 API를 찾을 수 없었습니다. 사용이 AppKit의 그것을 수행하는 방법을 모방하려는 경우

:

NSImage* _NSGetThemeImage(int num); 

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

더 나은 아직, 다음, NSImage을 잡아 TIFF 파일에 저장하고이 코드를 사용하여 프로그램이 TIFF를 포함한다. 이렇게하면 배송 코드에서 비공개 API를 사용하지 않아도됩니다. 나는 애플이 당신이 다이아몬드를 훔친다는 불평을하지 않을 것이다. ;)

+0

+1 내가 할 수있는 한 멀리 볼 수있는 공개 API가 없습니다. – jrtc27

+0

어, 그게 짜증 난다. 적어도 오히려 그것을 할 수있는 방법이 있습니다. 도와 주셔서 감사합니다! – Jonathon

+0

'setOnStateImage :'에 대한 문서는 "현재 상태 이미지 변경은 Mac OS X에서 지원되지 않습니다."라고 말합니다. 솔루션이 작동해서는 안된다는 뜻입니까? – JWWalker

관련 문제