2012-12-30 2 views
4

SystemTray 클래스를 통해 시스템 트레이에 숨겨진 응용 프로그램을 빌드했습니다. 잘 작동하지만 프로그램을 종료하고 다시 시작하면 커서로 가리 키기 전에 트레이에서 아이콘을 제거하지 않습니다. 이 여러 번 수행하면 여러 아이콘이 표시됩니다 :시스템 트레이에 여러 번 나타나는 Java 프로그램

enter image description here

이 내 프로그램에 문제가 아니면 그것은 윈도우의 버그?

나는 this guide을 따라 시스템 트레이 아이콘을 만들었습니다.

+2

종료시 제거가 어떻게 호출되는지 확인 하시겠습니까? –

+1

그냥 확인했지만 이전 응용 프로그램 인스턴스가 작업 관리자에서 닫혔다는 것을 확인 했습니까? – JayTee

+0

나는 정상적으로 종료하는 대신에 충돌 할 때 그런 식으로 행동하는 많은 프로그램을 안다. @PeterLawrey와 동의합니다 : systemTray.remove (아이콘) 호출이 부족합니다. – Philipp

답변

6

트레이 아이콘을 만든 응용 프로그램이 종료되면 Windows는 트레이 아이콘을 자동으로 제거하지 않습니다. 사용자가 마우스로 마우스를 가져 가면 소유 프로세스가 더 이상 존재하지 않음을 알게됩니다.

아이콘이 즉시 제거되었는지 확인하려면 프로그램 종료시 systemTray.remove(yourIcon)으로 전화해야합니다.

1

시스템 트레이에는 add(java.awt.TrayIcon) 방법을 사용하여 트레이에 추가 된 하나 이상의 트레이 아이콘이 포함되어 있습니다. 그들은 remove(java.awt.TrayIcon) 방법으로 더 이상 필요하지 않을 때 제거 할 수 있습니다.

관련 문제