KeyListener tastatur temporär blockieren

786Newbie

Mitglied
hi,
ich mache zur Zeit ein Spiel mit 2 Spielermodus;
dabei muss Spieler 1 Enter drücken,wenn die Bedingungen erfüllt sind
und Spieler 2 muss Lertaste drücken, wenn die Bedinungen erfüllt sind
am ende wird ausgegeben Wer als erster reagiert hat,wer punkt bekommen hat usw.

Problem ist, dass Wenn erst Spieler 1 gedrückt hat und danach Spieler 2 drückt, steht am ende nur noch dass Spieler 2 schneller war.Daher meine frage kann ich die Tastatur komplett für 3-4 sekunde blockieren falls einer der Spieler ihre Taste drückt?

hier ein kleiner ausschnitt:
Java:
 public void keyReleased(KeyEvent e) {
	    	 
		 
	       if(i==x){
	            if(e.getKeyCode() == KeyEvent.VK_ENTER){ 
	            	punkte1++;
	            	versuch.setPunkte1(punkte1);
	            	versuch.setMittelfeldinfo("Spieler1 war schneller!");
	            	repaint();
	            	
	            	stopAnimation();
	            }
	            if(e.getKeyCode() == KeyEvent.VK_SPACE){
	            	punkte2++;
	            	versuch.setPunkte2(punkte2);
	            	versuch.setMittelfeldinfo("Spieler1 war schneller!");
	            	repaint();
	            	stopAnimation();
	            }     
	       }
 

Gucky

Top Contributor
Du könntest es so machen, dass der KeyListener eine Methode leertasteGedrückt() aufruft und die überprüft, ob überhaupt jemand dran ist. Drückt der Erste, so wird ein flag gesetzt, dass niemand dran ist und ein Thread wird gestartet. Nach drei Sekunden setzt dieser Thread das Flag wieder auf true.
 

Gucky

Top Contributor
Du verfrachtest einfach den Teil, der jetzt im KeyListener steht in die Methode. :D
Das sieht IMHO besser aus und ist besser lesbar. Zwar leidet die Performance darunter aber auf heutigen Rechnern ist das bei Programmen der Größe egal.
Den Rest hast du ja verstanden.
 

786Newbie

Mitglied
sry ich bin zu blöd um dich zu verstehen :D
kannst du mir bitte sagen was ich falsch mache?^^

Java:
public void keyReleased(KeyEvent e) {
	    //Neue Runde
		 if(e.getKeyCode() == KeyEvent.VK_S){
			 startAnimation();
         }
		 
		 //FALLS GESCHAFT
		    
		 if(i==x){
			public void Entergedrückt(){ 
				 if(e.getKeyCode() == KeyEvent.VK_ENTER){ 
					 punkte1++;
					 versuch.setPunkte1(punkte1);
					 versuch.setMittelfeldinfo("Spieler1 war schneller!");
					 versuch.setNewround("Drücke die taste S für eine weitere Runde");
					 repaint();
					 stopAnimation();
				 }
			}
			public void leertastegedrückt(){
				 if(e.getKeyCode() == KeyEvent.VK_SPACE){
					 punkte2++;
					 versuch.setPunkte2(punkte2);
					 versuch.setMittelfeldinfo("Spieler1 war schneller!");
					 versuch.setNewround("Drücke die taste S für eine weitere Runde");
					 repaint();
					 stopAnimation();
				 }
			 }
		 }
	       //FALLS NICHT GESCHAFT
			 if(!(i==x)){
				 if(e.getKeyCode() == KeyEvent.VK_ENTER){ 
	            	punkte1--;
	            	versuch.setPunkte1(punkte1);
	            	stopAnimation();
	            	versuch.setMittelfeldinfo("Das war schlecht Spieler1! Versuchs nochmal!");
	            	versuch.setNewround("Drücke die taste S für eine weitere Runde");
	            	repaint();
				 }
				 if(e.getKeyCode() == KeyEvent.VK_SPACE){
	            	punkte2--;
	            	versuch.setPunkte2(punkte2);
	            	stopAnimation();
	            	versuch.setMittelfeldinfo("Das war schlecht Spieler2! Versuchs nochmal!");
	            	versuch.setNewround("Drücke die taste S für eine weitere Runde");
	            	repaint();    		
				 }     
			 }
		 }
 

Gucky

Top Contributor
Du kannst keine Methode in eine if Bedingung in eine Methode tun. Das verweigert der Compiler.

Klasse
Methode
KeyListener
Aufruf von Methode
 

786Newbie

Mitglied
hab deine Idee leider nicht hingekriegt und rum probiert:
ich denk mal du hast sowas ähnliches gemeint nur mit einem anderen weg oder? :D
Java:
public void keyReleased(KeyEvent e) {
		// Neue Runde
		if (e.getKeyCode() == KeyEvent.VK_S) {
				alreadyPressed= false;
				versuch.setMittelfeldinfo("Wer ist schneller?");
				versuch.setNewround(" ");
				startAnimation();
		}

		// FALLS GESCHAFT
		if (i == x) {
			
			if (e.getKeyCode() == KeyEvent.VK_ENTER) {
				if (alreadyPressed == false) {
					punkte1++;
					versuch.setPunkte1(punkte1);
					versuch.setMittelfeldinfo("Spieler1 war schneller!");
					versuch.setNewround("Drücke die taste S für eine weitere Runde");
					repaint();
					stopAnimation();
				}
				alreadyPressed = true;
			}
			if (e.getKeyCode() == KeyEvent.VK_SPACE) {
				if (alreadyPressed == false) {
					punkte2++;
					versuch.setPunkte2(punkte2);
					versuch.setMittelfeldinfo("Spieler2 war schneller!");
					versuch.setNewround("Drücke die taste S für eine weitere Runde");
					repaint();
					stopAnimation();
				}
				alreadyPressed= true;
			}
		}
 

Gucky

Top Contributor
Nö. Das ist immer noch nicht in einer separaten Methode.

Weißt du, was eine Methode ist und wie man sie einsetzen kann?

Und ich hatte eine bessere Idee: du speicherst die Zeit des ersten Drucks der Leertaste mit System.nanoTime() in einer Klassenvariable ab und mit dem nächsten Klick guckst du nach, ob schon 2.000.000.000 Nanosekunden vergangen sind. Wenn ja, gehts weiter, wenn nein, passiert nichts oder es wird eine Meldung ausgegeben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
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
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 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
D KeyListener-Problem nach dem "Gedrückthalten" einer Taste AWT, Swing, JavaFX & SWT 10
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
L AWT KeyListener, Taste gedrückt halten AWT, Swing, JavaFX & SWT 12
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
L Focus für KeyListener auf verschiedene Panels AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben