Question

J'ai une fenêtre (configurée pour être toujours au-dessus) sur laquelle vous pouvez cliquer pour obtenir un menu contextuel. Si l'utilisateur clique avec le bouton droit de la souris sur la fenêtre, le menu contextuel s'affiche, mais si l'utilisateur clique sur une autre fenêtre (telle que Firefox), le menu contextuel ne disparaît pas.

J'ai essayé de le réparer en ajoutant FocusListener à jwindow, j'ai implémenté FocusListener et redéfini les paramètres

.

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

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

mais cet événement ne se fait jamais appeler. J'ai aussi essayé ce qui suit,


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

Cet événement n'est pas non plus appelé.

Tout ce que jwindows a est un seul JLabel avec une image dessus.

Était-ce utile?

La solution

De mémoire, JWindow ne reçoit pas les événements de focus / window.

Autres conseils

Vous êtes censé appeler setFocusableWindowState (true) sur un JWindow pour lui permettre d'être mis au point. Mais cela " encore " n'est pas assez. Le JWindow doit également comporter des composants focalisables et je ne parviens toujours pas à le faire fonctionner. Utiliser JFrame setUndecorated () semble être le meilleur choix.

Pour pouvoir faire la mise au point, un JWindow doit être créé avec un Frame parent, comme new JWindow (parentFrame) . Faites cela et je pense que vous devriez constater qu’il obtiendra automatiquement le focus lorsque vous le configurerez sur visible.

Vous ne savez pas vraiment ce que vous essayez de faire. Si vous essayez de cacher le popup manuellement, vous devriez probablement utiliser WindowListener et gérer l'événement windowDeactivated.

Si vous souhaitez vraiment afficher un menu contextuel, vous devez utiliser JPopupMenu et non le mettre en œuvre vous-même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top