2010-07-28 3 views
3

대부분 시스템 트레이에서 실행되는 java swing에 애플리케이션이 있습니다. 사용자는 Tray Menu을 사용하여 몇 가지 작업을 수행 할 수 있습니다. 이러한 작업 중 하나는 앱 창을 표시하는 것입니다. 사용자가 응용 프로그램 창을 제공하고 나중에 다른 응용 프로그램으로 전환하면 내가 가진 문제는, 창에서 OS X의스윙 : 다른 앱에서 포커스를 벗어남 (OS X의 유용성)

에 유용성 함께, 그들은 작업 표시 줄를 사용하여 내 응용 프로그램으로 전환 할 수 있습니다. 하지만 OS X에서 앱은 메뉴가없는 모드에서 실행되며 Command + Tab 목록에도 표시되지 않습니다.

__LSUIElement 그들이 할 수있는 (창 자체를 클릭하지 않는 그래서 내 문제는 사용자가 응용 프로그램 창을 열 경우, 나중에 다른 응용 프로그램으로 전환하는 것이, 그들이 다시 전환 할 수있는 info.plist file

에서 true로 설정되어 다른 많은 창 뒤에서). 가장 간단한 방법은 사용자가 트레이 아이콘을 사용하여 창을 다시 여는 것이지만 창이 이미 열려 있기 때문에 앞으로 가져올 수 없습니다.

그래서 다른 응용 프로그램에 집중하고 내 창을 앞에 가져 오는 방법은 무엇입니까?

편집 :

내 문제가 '에이전트로 실행중인 응용 프로그램'을 받고으로하지 않습니다. 나는 이미 그 일을했습니다. 내가 가진 문제는 프로그램 창을 만들 때 맨 위에 놓는 것입니다. 나는 자바에서 이것을 할 수 없다.

답변

1

사용자가 메뉴 막대에서 아이콘을 클릭 할 때 (또는 창을 열 때) true 매개 변수로 activateIgnoringOtherApps:을 호출 할 수 있습니다. Java에서 Cocoa에 연결해야합니다.

1

을했던 질문에 대한 답변에서 제공하는 코드 :

try { 
    String[] cmd = new String[2]; 
    cmd[0] = "open"; 
    cmd[1] = "/Applications/MyApp.app"; 

    Runtime.getRuntime().exec(cmd); 
} 
catch(Exception ex) { 
    //ignore since there's nothing else that can be done 
} 

기본적으로 Mac OS X에서 "열기"명령을 사용하는 JVM을 통해 다른 프로세스를 실행하여 트레이 아이콘을 만든 Java 프로그램을 래핑하는 응용 프로그램을 엽니 다. 창 자체가 다시 열리라는 말은 이미 실행 중이므로 창을 앞쪽으로 가져옵니다.