Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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!

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

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)

			...

	}

});

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.