Frage

Ich habe einen JWindow (Satz immer oben zu sein), die Sie klicken können, ein Popup-Menü zu gelangen. Wenn der Benutzer rechts das Fenster klickt es zeigt das Menü Pop, aber dann, wenn der Benutzer ein anderes Fenster klickt (zB Firefox) Pop-Menü verschwindet nicht.

Ich habe versucht, es zu beheben, indem Focuslistener auf dem JWindow Hinzufügen implementiert i Focuslistener, und überschreiben


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

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

aber es Ereignis nie aufgerufen. Ich habe versucht, auch die folgenden,


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

dieses Ereignis auch nicht genannt.

Alle diese jWindows hat ein einzelnes JLabel mit einem Bild auf sie.

War es hilfreich?

Lösung

Aus dem Gedächtnis JWindow der nicht Fokus / Fenster-Events erhalten.

Andere Tipps

Sie sind wohl setFocusableWindowState(true) auf einem JWindow nennen, damit es fokussierbar sein. Aber die „noch“ ist nicht genug. Die JWindow muss auch fokussierbare Komponenten und ich bin immer noch nicht in der Lage, es zu bekommen zu arbeiten. JFrame setUndecorated() Mit scheint die beste Wahl.

Um fokussierbarem muss ein JWindow mit einem Elternteil Frame geschaffen werden, wie new JWindow(parentFrame). Tun Sie das, und ich glaube, Sie finden sollte es automatisch den Fokus erhalten, wenn Sie es auf sichtbar gesetzt.

Nicht wirklich sicher, was Sie zu tun versuchen. Wenn Sie versuchen, das Popup zu verstecken manuell dann sollten Sie vielleicht einen Window verwenden und das windowDeactivated Ereignis behandeln.

Wenn Sie wirklich ein Popup-Menü angezeigt werden sollen, sollten Sie JPopupMenu verwenden, es selbst nicht umsetzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top