초점 이벤트를 얻지 못하는 Jwindow Alway
문제
팝 메뉴를 얻으려면 클릭 할 수있는 jwindow (항상 맨 위에 설정)가 있습니다. 사용자가 창을 마우스 오른쪽 버튼으로 클릭하면 팝 메뉴가 표시되지만 사용자가 다른 창 (예 : Firefox) 팝 메뉴를 클릭하면 사라지지 않습니다.
Jwindow에 FocusListener를 추가하여 고치려고 노력했고 FocusListener를 구현하고 Override를 구현했습니다.
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가 가지고있는 모든 것은 사진이있는 단일 jlabel입니다.
해결책
메모리에서 Jwindow는 초점/창 이벤트를받지 못합니다.
다른 팁
당신은 전화를한다고 가정합니다 setFocusableWindowState(true)
a JWindow
집중할 수 있도록합니다. 그러나 그 "여전히"는 충분하지 않습니다. 그만큼 JWindow
또한 집중 가능한 구성 요소가 있어야하며 여전히 작동 할 수 없습니다. 사용 JFrame setUndecorated()
최선의 선택 인 것 같습니다.
집중할 수 있으려면 a JWindow
부모와 함께 만들어야합니다 Frame
, 처럼 new JWindow(parentFrame)
. 그렇게하면 보이도록 설정하면 자동으로 초점을 맞출 것입니다.
당신이 무엇을하려고하는지 잘 모르겠습니다. 팝업을 수동으로 숨기려고하는 경우 Windowlistener를 사용하고 Windowdeactivated 이벤트를 처리해야합니다.
팝업 메뉴를 정말로 표시하려면 직접 구현하지 않고 Jpopupmenu를 사용해야합니다.