2017-09-10 4 views
0

J'ai un problème avec mon programme que je ne peux pas résoudre. J'essaie depuis des heures et j'ai essayé de google, etc ... J'ai vu beaucoup de programmes, ce qui fonctionne, mais je ne sais pas pourquoi ma solution ne fonctionne pas. Mon but (pour le moment) est simple, je veux écrire sur la ligne de commande en cas de clic de souris ou de pression de touche. Le premier fonctionne, mais le second ne l'est pas. Quelqu'un peut-il dire pourquoi?java eclipse windowbuilder keyL'événement pressé ne se déclenche pas

import java.awt.EventQueue; 

import javax.swing.JFrame; 
import java.awt.event.KeyAdapter; 
import java.awt.event.KeyEvent; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 

public class test { 

    private JFrame frame; 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        test window = new test(); 
        window.frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    public test() { 
     initialize(); 
    } 

    private void initialize() { 
     frame = new JFrame(); 
     frame.getContentPane().addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseClicked(MouseEvent arg0) { 
       System.out.println("Mouse has clicked!"); 
      } 
     }); 
     frame.getContentPane().addKeyListener(new KeyAdapter() { 
      @Override 
      public void keyPressed(KeyEvent arg0) { 
       System.out.println("A key has pressed."); 
      } 
     }); 
     frame.setBounds(100, 100, 450, 300); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

} 
+3

1) Pour Swing, nous utilisons typiquement [key bindings] (https://docs.oracle. com/javase/tutoriel/uiswing/misc/keybinding.html) plutôt que le niveau inférieur 'KeyListener'. 2) * "J'essaie depuis des heures et j'ai essayé de google, etc ... J'ai vu beaucoup de programmes, ce qui fonctionne, mais je ne sais pas pourquoi ma solution ne fonctionne pas." * J'ai du mal à comprendre pourquoi dans les «nombreux programmes» que vous avez essayés, vous n'avez pas vu que le composant en question doit à la fois être focalisable et se concentrer sur l'entrée pour qu'un auditeur clé puisse fonctionner. (Ou que c'est l'un des problèmes que les raccourcis clavier nous aident à résoudre!) –

+0

Avez-vous essayé 'frame.add ... Listener (...)' au lieu de 'frame.getContentPane(). Add ... Listener (...) '? – howlger

Répondre

-1

Eh bien, j'ai finalement eu le temps d'essayer de trouver la solution et maintenant je l'ai découvert. Je ne sais pas pourquoi, mais il n'était pas possible d'ajouter un keyListener au JFrame. Je pourrais seulement ajouter pour un JButton ou un JTextField, etc ... Ceci est étrange pour moi, un peu: c

+0

* "Je ne sais pas pourquoi, mais il n'était pas possible d'ajouter un keyListener au JFrame, je ne pouvais l'ajouter que pour un JButton ou un JTextField, etc ... C'est étrange pour moi, un peu". ne pas être, si vous avez lu et compris mon commentaire d'il y a 2 jours. –