2017-09-10 3 views
0

Ich habe ein Problem mit meinem Programm, was ich nicht lösen kann. Ich versuche stundenlang und versuche Google, etc ... Ich habe viele Programme gesehen, die funktionieren, aber ich weiß nicht, warum meine Lösung das nicht tut. Mein Ziel (für jetzt) ​​ist einfach, ich möchte im Falle eines Mausklicks oder eines Tastendrucks in die cmd-Zeile schreiben. Der erste funktioniert, der zweite nicht. Kann mir jemand sagen warum?java eclipse windowbuilder keyPressed Ereignis löst nicht

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) Für Swing, verwenden wir in der Regel [Tastenbelegungen] (https://docs.oracle. com/javase/tutorial/uiswing/misc/keybinding.html) statt der unteren Ebene 'KeyListener'. 2) * "Ich versuche stundenlang und versuche Google, etc ... Ich habe viele Programme gesehen, die funktionieren, aber ich weiß nicht, warum meine Lösung nicht funktioniert." * Ich habe Probleme zu verstehen Warum haben Sie in den vielen Programmen, die Sie ausprobiert haben, nicht gesehen, dass die fragliche Komponente sowohl fokussierbar sein muss als auch den Eingabefokus haben muss, damit ein wichtiger Listener funktioniert. (Oder dass dies eines der Probleme ist, das uns die Tastenbelegung hilft zu lösen!) –

+0

Hast du 'frame.add ... Listener (...)' anstelle von 'frame.getContentPane() versucht. Add ... Listener (...) '? – howlger

Antwort

-1

Nun, endlich hatte ich genug Zeit zu versuchen, die Lösung zu finden und jetzt bin ich entdeckt. Ich weiß nicht warum, aber es war nicht möglich, einen keyListener zum JFrame hinzuzufügen. Ich könnte nur für ein JButton oder ein JTextField, etc hinzufügen ... Das ist seltsam für mich, ein bisschen: c

+0

* "Ich weiß nicht warum, aber es war nicht möglich, einen keyListener zum JFrame hinzuzufügen. Ich könnte nur für ein JButton oder ein JTextField, etc ... hinzufügen. Das ist seltsam für mich, ein bisschen" * Es sollte nicht sein, wenn Sie meinen Kommentar von vor 2 Tagen gelesen und verstanden haben. –

Verwandte Themen