AWT KeyListener, Taste gedrückt halten

Leifa

Mitglied
Hi!

Ich probiere gerade etwas mit grafischen Anwendungen herum. Ich habe folgenden Programmaufbau:

Java:
public class Prog extends java.awt.Frame implements KeyListener {
...
    public void keyPressed(KeyEvent ke) {
        ...
    }

    public void keyReleased(KeyEvent ke) {
        ...
    }

    public void keyTyped(KeyEvent ke) {
        ...
    }
}

Wenn ich nun eine Taste gedrückt halte, dann werden abwechselnd ganz oft keyPressed, keyTyped und keyReleased aufgerufen. Ich suche aber eine Methode, die nur ein einziges Mal beim Herunterdrücken der Taste ausgeführt wird und eine andere Methode, die nur ein einziges Mal bei Loslassen ausgeführt. Gibt es sowas in java?
 

eRaaaa

Top Contributor
Wenn ich nun eine Taste gedrückt halte, dann werden abwechselnd ganz oft keyPressed, keyTyped und keyReleased aufgerufen.

Mhm, sicher dass alle 3 abwechselnd ausgeführt werden? Und nicht nur pressed + typed? bei released sollte das eig. nicht der Fall sein ?!
Ich suche aber eine Methode, die nur ein einziges Mal beim Herunterdrücken der Taste ausgeführt wird und eine andere Methode, die nur ein einziges Mal bei Loslassen ausgeführt. Gibt es sowas in java?

Könntest du irgendwie mit "flags" machen: (vorausgesetzt meine vorherige Annahme stimmt)
Java:
	    @Override
	    public void keyTyped(KeyEvent e) { //oder evtl. mit keyPressed? ka...
		if (!isHolding) {
		    isHolding = !isHolding;
		    System.out.println("typed");
		}
	    }

	    @Override
	    public void keyReleased(KeyEvent e) {
		System.out.println("released");
		isHolding = !isHolding;
	    }
 
Zuletzt bearbeitet:

Leifa

Mitglied
Also sie werden ganz sicher alle 3 abwechselnd aufgerufen:

Code:
pressed
typed
released
pressed
typed
released
...
 
G

Gast2

Gast
Warum nimmst du AWT???
Also bei Swing kann ich das Verhalten nicht besätigen
Java:
public class TestFrame extends JFrame{

	
	@Override
	protected void processKeyEvent(KeyEvent e) {
		if(KeyEvent.KEY_PRESSED == e.getID()){
			System.out.println("KEY_PRESSED");
		}else if(KeyEvent.KEY_RELEASED == e.getID()){
			System.out.println("KEY_RELEASED");
		}else if(KeyEvent.KEY_TYPED == e.getID()){
			System.out.println("KEY_TYPED");
		}
		super.processKeyEvent(e);
	}
 
G

Gast2

Gast
Ich kenne mich mit Swing nicht aus, und mit AWT bin ich gerade dabei, mir Grundlagen anzueignen. Gibt es auch eine Möglichkeit für AWT?

AWT ist veraltet und der Unterschied ist nicht viel größer... Darum lern gleich Swing...
Wie gesagt kein großer Unterschied!!! Siehst du an deinem Code mach einfach ein J vor dein Frame und schon benutzt du Swing der rest ist gleich...

Des Weiteren funktioniert dein BSP auch unter AWT relaesed wird erst aufgerufen wenn losgelassen wird davor nicht...
 
Zuletzt bearbeitet von einem Moderator:

Leifa

Mitglied
AWT ist veraltet und der Unterschied ist nicht viel größer... Darum lern gleich Swing...
Ok danke, gut zu wissen. :)
Dann werde ich mir mal Swing angucken...

EDIT:

Ich sehe gerade, dein vorgeschlagener Code funktioniert auch nicht wie gewollt:
Code:
KEY_PRESSED
KEY_TYPED
KEY_RELEASED
KEY_PRESSED
KEY_TYPED
KEY_RELEASED

Kann das vielleicht an meinem Laptop liegen, dass bei gedrückten Tasten einfach ganz viele Key-Events nacheinander gesendet werden?
 
Zuletzt bearbeitet:
G

Gast2

Gast
Ok danke, gut zu wissen. :)
Dann werde ich mir mal Swing angucken...

EDIT:

Ich sehe gerade, dein vorgeschlagener Code funktioniert auch nicht wie gewollt:
Code:
KEY_PRESSED
KEY_TYPED
KEY_RELEASED
KEY_PRESSED
KEY_TYPED
KEY_RELEASED

Kann das vielleicht an meinem Laptop liegen, dass bei gedrückten Tasten einfach ganz viele Key-Events nacheinander gesendet werden?

Was hast du für ein OS???
Also meine Ausgabe ist
Code:
KEY_PRESSED
KEY_TYPED
KEY_PRESSED
KEY_TYPED
KEY_PRESSED
KEY_TYPED
KEY_PRESSED
KEY_TYPED
KEY_PRESSED
KEY_TYPED
KEY_RELEASED

und am schluß ein relased wenn ich losgelassen hab(Windows)...
Ich glaub bei Linux bekommst du nur ein Pressed und ein Typed und beim loslassen rein relased...
 

Scrimau

Mitglied
Wenn ich nun eine Taste gedrückt halte,
Das ist jetzt vielleicht eine komische Frage, aber hälst du die Taste auch wirklich gedrückt und lässt nicht los? Und hast du eine funktionierende Maus? ^^

Kann mir eig. nicht vorstellen dass das am OS liegt, hab zwar kein Linux aber es würden nicht so viele Leute das benutzen wenn das noch nicht mal eine ordentliche Mauserkennung hat.
 
G

Gast2

Gast
Das ist jetzt vielleicht eine komische Frage, aber hälst du die Taste auch wirklich gedrückt und lässt nicht los? Und hast du eine funktionierende Maus? ^^

Kann mir eig. nicht vorstellen dass das am OS liegt, hab zwar kein Linux aber es würden nicht so viele Leute das benutzen wenn das noch nicht mal eine ordentliche Mauserkennung hat.

Wir reden übrigens von der Tastatur...^^
Und die KeyFunktionen reagieren anders auf jedem OS... Aber key released sollte auch ein release sein...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D KeyListener-Problem nach dem "Gedrückthalten" einer Taste AWT, Swing, JavaFX & SWT 10
D Keylistener, Taste überprüfen AWT, Swing, JavaFX & SWT 21
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
N Keylistener & JComboBox AWT, Swing, JavaFX & SWT 5
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
H KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
Fridolin111 Der KeyListener Löst kein event aus AWT, Swing, JavaFX & SWT 6
B KeyListener auf JFrame reagiert nicht AWT, Swing, JavaFX & SWT 8
N Mit KeyListener ein rechteck zeichnen AWT, Swing, JavaFX & SWT 9
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
B Swing KeyListener auf Container? AWT, Swing, JavaFX & SWT 1
T Event Handling KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 10
K KeyListener ohne JFrame AWT, Swing, JavaFX & SWT 9
C Keylistener funktioniert nicht AWT, Swing, JavaFX & SWT 1
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
A Event Handling Muss ich 'KeyListener' tasuend mal zufügen? AWT, Swing, JavaFX & SWT 7
S mit keylistener frame schliessen AWT, Swing, JavaFX & SWT 8
S Keylistener reagiert bei Buttons nicht. AWT, Swing, JavaFX & SWT 8
S KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 2
R KeyListener in mehreren Panels AWT, Swing, JavaFX & SWT 5
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
J JLabel Visible setzen in KeyListener AWT, Swing, JavaFX & SWT 13
X KeyListener AWT, Swing, JavaFX & SWT 0
L KeyListener für JDialog AWT, Swing, JavaFX & SWT 7
N KeyListener funktioniert nicht richitg AWT, Swing, JavaFX & SWT 4
Z SnakeGame Schlange per KeyListener bewegen! AWT, Swing, JavaFX & SWT 10
T KeyListener AWT, Swing, JavaFX & SWT 2
GianaSisters JFrame mit JInternalFrames, Keylistener-Problem AWT, Swing, JavaFX & SWT 9
7 KeyListener tastatur temporär blockieren AWT, Swing, JavaFX & SWT 7
7 AWT problem: KeyListener/ test im Label umändern AWT, Swing, JavaFX & SWT 4
B SWT Problem: Wie kann man für jede TableColumn einen eigenen KeyListener registrieren. AWT, Swing, JavaFX & SWT 1
U Mouse + Keylistener AWT, Swing, JavaFX & SWT 12
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
J JWindow und keylistener AWT, Swing, JavaFX & SWT 1
F JavaFX KeyListener zum Fenster öffnen/schließen AWT, Swing, JavaFX & SWT 9
A Swing KeyEvent mit KeyListener und KeyAdapter kürzer schreiben AWT, Swing, JavaFX & SWT 7
D JTextArea auf KeyListener Command AWT, Swing, JavaFX & SWT 6
C KeyListener AWT, Swing, JavaFX & SWT 5
Doopy Event Handling KeyListener funktioniert nach Restart nicht mehr AWT, Swing, JavaFX & SWT 7
S KeyListener geht nicht AWT, Swing, JavaFX & SWT 12
C Swing KeyListener in JPanel AWT, Swing, JavaFX & SWT 2
A KeyListener Button wechseln & Programm beenden AWT, Swing, JavaFX & SWT 4
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
H Bild mit KeyListener verschieben AWT, Swing, JavaFX & SWT 2
C JTextField KeyListener AWT, Swing, JavaFX & SWT 6
Y KeyListener, GUI Thread, repaint AWT, Swing, JavaFX & SWT 7
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
E Swing KeyListener implementieren AWT, Swing, JavaFX & SWT 12
P KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 11
M KeyListener richtig implementieren AWT, Swing, JavaFX & SWT 3
T KeyListener AWT, Swing, JavaFX & SWT 4
R KeyListener in JWindow AWT, Swing, JavaFX & SWT 7
T BlueJ KeyListener AWT, Swing, JavaFX & SWT 7
Z KeyListener AWT, Swing, JavaFX & SWT 2
M Swing KeyListener in JTextfield AWT, Swing, JavaFX & SWT 4
C Swing KeyListener für JPanel funktioniert nicht AWT, Swing, JavaFX & SWT 8
VfL_Freak Swing KeyListener, um einen Dialog per ESC zu schließen AWT, Swing, JavaFX & SWT 6
A Keylistener reagiert nicht AWT, Swing, JavaFX & SWT 10
D Problem mit KeyListener AWT, Swing, JavaFX & SWT 2
J KeyListener um auf CTRL-Enter zu reagieren AWT, Swing, JavaFX & SWT 2
L Snake in Java KeyListener Problem AWT, Swing, JavaFX & SWT 30
B "globaler" KeyListener? AWT, Swing, JavaFX & SWT 3
B JTable TableHeader KeyListener AWT, Swing, JavaFX & SWT 4
S Swing KeyListener und JList AWT, Swing, JavaFX & SWT 2
R KeyListener funzt nicht AWT, Swing, JavaFX & SWT 2
X KeyListener AWT, Swing, JavaFX & SWT 4
P KeyListener + Animation AWT, Swing, JavaFX & SWT 2
M Fokus für KeyListener AWT, Swing, JavaFX & SWT 9
V Problem mit KeyListener im Fullscreen-Modus AWT, Swing, JavaFX & SWT 2
M AWT KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 10
C Swing KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 7
K JFrame + KeyListener + Runnable = Fehler AWT, Swing, JavaFX & SWT 3
F Tastenabfrage (KeyListener) AWT, Swing, JavaFX & SWT 2
D KeyListener Problem bei JPanel wechsel AWT, Swing, JavaFX & SWT 2
S Swing JTree mit KeyListener AWT, Swing, JavaFX & SWT 2
L AWT KeyListener, requestFocus und KeyBindings AWT, Swing, JavaFX & SWT 8
E JFrame akzeptiert den KeyListener nicht AWT, Swing, JavaFX & SWT 3
F Swing Problem mit KeyListener||paintComponent() in JFrame AWT, Swing, JavaFX & SWT 12
P Swing KeyListener hört nur manchmal zu AWT, Swing, JavaFX & SWT 2
Screen Focus Problem , KeyListener, TextField , Key AWT, Swing, JavaFX & SWT 4
earlgrey_tea AWT KeyListener bekommt keine Signale AWT, Swing, JavaFX & SWT 3
L Problem mit KeyListener AWT, Swing, JavaFX & SWT 3
A KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 4
B Swing Keylistener fuer Dialog-Buttons AWT, Swing, JavaFX & SWT 2
B KeyListener Strg+s AWT, Swing, JavaFX & SWT 5
D Globaler Keylistener AWT, Swing, JavaFX & SWT 4
M problem mit keylistener/textarea AWT, Swing, JavaFX & SWT 6
M KeyListener Problem unter Firefox AWT, Swing, JavaFX & SWT 2
M Komisches Verhalten: JCombobox mit KeyListener AWT, Swing, JavaFX & SWT 13
capgeti SWT KeyListener 2 Tasten Problem AWT, Swing, JavaFX & SWT 3
R KeyListener - welcher Komponente hinzufügen AWT, Swing, JavaFX & SWT 5
Developer_X AWT KeyListener wird nicht ausgeführt! AWT, Swing, JavaFX & SWT 3
N JFrame und KeyListener AWT, Swing, JavaFX & SWT 6
M KeyListener reagiert nach Buttondruck nicht mehr AWT, Swing, JavaFX & SWT 4
A AWT Button verhindert ausführung vom Keylistener AWT, Swing, JavaFX & SWT 4
R KeyListener hinzufügen AWT, Swing, JavaFX & SWT 7
T Swing KeyListener mit mehreren Objekten AWT, Swing, JavaFX & SWT 2
G KeyListener AWT, Swing, JavaFX & SWT 3
E KeyListener AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben