2009-09-16 5 views
2

jwindow를 클릭하면 팝업 메뉴가 나타납니다. 사용자가 팝업 창을 오른쪽 클릭하면 팝업 메뉴를 표시하지만 사용자가 다른 창 (예 : Firefox)을 클릭하면 팝업 메뉴가 사라지지 않습니다. JWindow가 항상 포커스 이벤트를 얻지 못합니다.

내가 JWindow의에서의 FocusListener를 추가하여 문제를 해결하려고, 난의 FocusListener를 구현


    public void focusGained(FocusEvent e) { 
    System.out.println("gain"); 
    } 

    public void focusLost(FocusEvent e) { 
    System.out.println("lost"); 
    } 

을 무시하지만,이 이벤트는 결코 호출되지 얻을. 나는 또한 다음을 시도했다.


    addWindowFocusListener(new WindowAdapter() { 
     public void windowGainedFocus(WindowEvent e) { 
      System.out.println("gain 2"); 
     } 
     }); 

이 이벤트도 호출되지 않았다.

이 모든 jwindows has는 그림이있는 단일 JLabel입니다.

답변

3

메모리에서 JWindow 's는 포커스/윈도우 이벤트를 수신하지 않습니다.

+1

예, JFrame으로 전환 한 케이스가 undecorated로 설정하여 내 문제를 해결했습니다. –

0

정말로 무엇을 하려는지 확실치 않습니다. 팝업을 수동으로 숨기려면 WindowListener를 사용하고 windowDeactivated 이벤트를 처리해야합니다.

+0

나는 스윙이 그것을하지 않기 때문에 나는 수동으로 팝업을 비활성화하고 싶지 않다. 대안으로. –

0

정말로 팝업 메뉴를 표시하려면 JPopupMenu를 사용해야하며 직접 구현하지 않아야합니다.

1

setFocusableWindowState(true)JWindow에 전화하면 포커스를 허용 할 수 있습니다. 그러나 "여전히"충분하지 않습니다. JWindow에는 포커스 가능 구성 요소가 있어야하며 아직 작동하지 않습니다. JFrame setUndecorated()을 사용하는 것이 가장 좋은 방법 인 것 같습니다.

2

JWindow은 과 같은 부모 Frame과 함께 생성되어야합니다. 그렇게하면 눈에 띄게 설정할 때 자동으로 포커스를 얻는 것을 발견해야한다고 생각합니다.