KeyListener lässt sich nur einmal drücken

Timber2205

Mitglied
Nabend Leute,

ich bin es nochmal. Schreibe in der Uni eine Art Memory. Das Spiel nennt sich SET. Könnt ihr hier zocken ^^ Set Daily Puzzle

Nun schreib ich eine Variante, der der n-Spieler an einem PC gegeneinander spielen. Also wer ein Set gefunden hat, drückt seine Taste und dann werden Punkte gezählt usw.

Nun ist das Problem, dass ich in der GUI nur einmal eine Taste drücken kann, aber kein zweites Mal.

Ich erzeuge einen KeyListener und ordne diesem meinem JFrame zu. Focus ist auch gesetzt:

Java:
klPlayer = new KeyListener(){
			public void keyPressed(KeyEvent arg0) {
				char key = arg0.getKeyChar();	
				for (int i=0; i<36; i++){
					//Schauen, welcher Spieler gedrückt hat und ob er überhaupt mitspielt
					if (key == cPlayers[i] && bPlayers[i]==true){
						taPlayer.append("\nPlayer "+i+": It is your turn!\n");
						taPlayer.setCaretPosition(taPlayer.getText().length() - 1);
						aPlayer = i;
						bSet.setEnabled(true);
						bNoSet.setEnabled(true);
					}
				}
			}
			public void keyReleased(KeyEvent arg0) {}
			public void keyTyped(KeyEvent arg0) {}
		};
		
		frameGame.addKeyListener(klPlayer);

taPlayer ist TextArea zur Ausgabe
aPlayer ist der Momentan aktive Player, damit ich später weiß, wer denn nun gedrückt hat
cPlayers ist ein char-Array, dass alle Tastatursymbole der Spieler gespeichert hat
bPlayer ist ein boolean-Array, dass die Werte für die Spieler beinhaltet. Es kann ja nur einer drücken, der auch mitspielt ^^

bSet und bNoSet sind einfach die Button, ob ein Set gefunden wurde, oder ob kein Set gefunden wurde, da passiert nicht aufregendes. Auf jedenfall nichts mit dem frame oder Listener.


Ich hoffe die Infos reichen. Ich werde jetzt endlich mal schlafen gehen.

Gute Nacht und Danke schonmal
 
Springt er nicht mal in den Listener, oder macht er da einfach nur nichts? Kannst also ggf. paar Debugmeldungen einbauen.
Vllt verlierst du ja auch den Focus nach der Aktion? Das wäre auch noch zu überprüfen.
 
Ich kann genau einmal mit dem Spiel agieren, d.h. er nimmt genau eine Aktion von der Tastatur entgegen. Habe den Focus auch schon an sämtliche Stellen neu eingefügt :\

Edit: Ich mag ungerne mehr vom Code Veröffentlichen, da es leider ein Uni-internes Projekt ist und wer weiß, ob der Prof hier aktiv ist ???:L
 
Zuletzt bearbeitet:

Zurück
Oben