문제

팝 메뉴를 얻으려면 클릭 할 수있는 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를 사용해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top