/ / écrire un auditeur global - java, swing, auditeur

l'écriture globale d'écoute - java, swing, auditeur

Je veux la fenêtre active (i.JFrame of JDialog) pour recevoir un événement keyEvent spécifique, de sorte que la mise au point de cet événement keyevent soit gérée par la fenêtre telle que ALT + F4 si vous appuyez sur quelle que soit la fermeture de la fenêtre active, j'essaie de remplacer postprocesskeyEvent mais cela ne fonctionne pas correctement

Réponses:

1 pour la réponse № 1

Vous pouvez ajouter un écouteur d'événements global à votre application à l'aide de la méthode addAWTEventListener () de java.awt.Toolkit.

http://java.sun.com/javase/6/docs/api/java/awt/Toolkit.html#addAWTEventListener%28java.awt.event.AWTEventListener,%20long%29

Vous devrez choisir le type d'événements que vous souhaitez recevoir avec le masque d'événements lorsque vous ajoutez le programme d'écoute.

Par exemple:

// Then on startup register.
AWTEventListener myGlobalKeyListener = new MyGlobalKeyListener();

Toolkey.getDefaultToolkit().addAWTEventListener(myGlobalKeyListener, AWTEvent.KEY_EVENT_MASK);

Si vous essayez d'empêcher les fenêtres de se fermervotre application lorsque l'utilisateur appuie sur ALT-F4, un gestionnaire d'événements ne vous aidera pas. Je pense que le système d’exploitation gère cela en envoyant SIGTERM à l’application. Java ne reçoit pas le KeyEvent pour cela.


1 pour la réponse № 2

L’approche standard pour intercepter KeyStrokes lors de l’utilisation de Swing consiste à utiliser Raccourcis clavier. Bien que, comme mentionné précédemment, cela ne fonctionne toujours pas pour Alt + F4.

Si vous essayez d'empêcher Alt + F4 de fermer la fenêtre, vous devez utiliser la méthode setDefaltCloseOperation (...) pour ne rien faire. Fermeture d'une application donne plus d'informations sur cette approche.