Problème keyListener lorsque la fenêtre est masquée

Fermé
soyen - 26 oct. 2020 à 16:39
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 26 oct. 2020 à 17:53
Bonjour,
J'arrive à afficher "r clicked" uniquement lorsque ma fenêtre est visible, lorsque j'appuie sur masquer (setVisible(false)) alors l'action du keyListener ne fonctionne pas

import javax.swing.*;
import java.awt.*;
import java.io.*;
import javax.swing.event.CaretListener;
import javax.swing.event.CaretEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public class IG_Screen extends JFrame implements ActionListener, KeyListener{
 JButton btnCommentaire = new JButton("Masquer");
 public IG_Screen(){
  super("Screen");
  this.setSize(150, 100);
  this.setVisible(true);
  btnCommentaire.addActionListener(this);
  addKeyListener(this);
  btnCommentaire.setBounds(10, 10, 120, 25);
  this.add(btnCommentaire);	
  addWindowListener(new WindowAdapter(){
	public void windowOpened(WindowEvent e) { 
	requestFocus(false);	
	}
  });
 } 
 public void keyPressed(KeyEvent evt){}
 public void keyReleased(KeyEvent evt){} 

 public void keyTyped(KeyEvent evt) {
 if (evt.getKeyChar() == 'r'){
 	 System.out.println("r cliked");
     this.setVisible(true);
 }
}
  
 public void actionPerformed(ActionEvent e) {
  if (e.getSource() == btnCommentaire){
   this.setVisible(false);
   }
 } 
 
 public static void main(String[] args) {
 	JFrame f = new IG_Screen(); 
    f.setLayout(null);
    f.setVisible(true); 
 }
}


d'avance merci pour votre aide
A voir également:

1 réponse

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
26 oct. 2020 à 17:53
Bonjour,

Un Listener récupère les événements du composant auquel il est ajouté.

Si tu appuies sur une touche lorsque tu es sur un composant c'est les KeyListener de ce composant qui seront appelés, mais aucun cas les Listener des autres composants ne seront appelés.

Si ton composant est masqué, tu ne peux plus interagir avec lui, les événements vont être envoyés à un autre composant : celui qui est resté visible, potentiellement géré par un autre programme.
0