Zum Inhalt springen

KeyEvents differenzieren ?


Ulfmann

Empfohlene Beiträge

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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)

			...

	}

});

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...