Ulfmann Geschrieben 18. Februar 2009 Teilen Geschrieben 18. Februar 2009 Hallo, Wie stelle ich es an, mehrere (gleiche) KeyEvents auseinander zu halten? Mir schwebt das Prinzip der ActionEvents vor, bei denen man dem Listener ja durch getActionCommand() eindeutig (und bestenfalls auch für den Leser verständlich) mitteilen kann, woher (von welchem Button z.B.) das Event gekommen ist. Bei KeyEvents ist mir nur bekannt: public void keyPressed( KeyEvent kev ) { if( kev.getKeyCode() == KeyEvent.VK_ENTER ) { // tue dies } if( kev.getKeyCode() == KeyEvent.VK_ESCAPE ) { // tue das } } Das bringt mir hier jedoch nichts. Ich hab auch mit getSource() und getClass() schon rumprobiert, aber erreiche nicht das, was ich will. Mein Listener soll letzten Endes eindeutig wissen, was er tun soll. Und das geht nur, wenn der "Absender" des Events identifiziert werden kann. Bitte um Ratschläge. Vielen Dank! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 19. Februar 2009 Teilen Geschrieben 19. Februar 2009 Wer ist denn der "Absender"? Das Textfeld? Dann ist getSource() schon das, was Du brauchst. Ansonsten musst Du einen KeyListener definieren, der an sich schon eine Unterscheidung in sich trägt (z.B. in Form eines Objektattributs, das auf die Quelle schließen lässt. Dann kannst Du den unterschiedlichen "Absendern" jeweils ihren speziellen KeyListener mitgeben, der dann nicht im KeyEvent nachschauen muss, wer der "Absender" ist. Beispiel (ungetestet, weil nur hier reingeschrieben): class ParameterizedKeyListener implements KeyListener { private int source; public ParameterizedKeyListener(int source) { this source = source; } public void keyXY(KeyEvent event) { // check source and react } } [...] texfield1.addKeyListener(new ParameterizedKeyListener(1)); textfield2.addKeyListener(new ParameterizedKeyListener(1)); [...] Ob Dein Absender jetzt durch eine Zahl wie bei mir oder durch irgendwas anderes identifiziert wird, musst Du selbst besser wissen, weil Du ja weißt, was Du mit der Information tun willst. Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
VaNaTiC Geschrieben 19. Februar 2009 Teilen Geschrieben 19. Februar 2009 wenn in getSource() das falsche drin steht, trägst Du das keypressed() nicht korrekt in die Componente ein. Willst Du eigentlich einen globalen KeyHandler programmieren? Ginge auch mit inline-class: this.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_HOME) { ... } else if (e.getKeyCode() == KeyEvent.VK_F5) ... } }); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.