Hallo,
ich wollte einmal fragen, ob es möglich ist als KeyListener eine zweite Klasse zu nutzen (Übersichtshalber)?
Denn ich habe eine zweite klasse geschrieben (Key_Listener) und rufe sie ab über:
kl = new Key_Listener();
this.addKeyListener( kl ); //Superklasse, deswegen this.
Jedoch reagiert er nun nicht bei jeglichem tastendruck..
Ach und ich wollte noch wissen ob man in eine Paint methode auch eine zweite klasse abrufen kann, durch eine entsprechende methode darin, welche auch painted???
packageSnake_Application;importjava.awt.event.KeyEvent;importjavax.swing.JLabel;publicclassKey_Listener{@SuppressWarnings("unused")privatestaticboolean right =Snake.right,
left =Snake.left,
up =Snake.up,
down =Snake.down,
gameover =Snake.gameover;privatestaticlong vorher2 =Snake.vorher2;@SuppressWarnings("unused")privatestaticint score =Snake.score,
laenge =Snake.laenge;privatestaticJLabel jLabel =Snake.jLabel;publicstaticvoidkeyPressed(KeyEvent e ){if( e.getKeyChar()=='a'&& right ==false&&(System.currentTimeMillis()- vorher2 )>25){
up =false;
left =true;
down =false;}if( e.getKeyChar()=='d'&& left ==false&&(System.currentTimeMillis()- vorher2 )>25){
up =false;
right =true;
down =false;}if( e.getKeyChar()=='w'&& down ==false&&(System.currentTimeMillis()- vorher2 )>25){
up =true;
left =false;
right =false;}if( e.getKeyChar()=='s'&& up ==false&&(System.currentTimeMillis()- vorher2)>25){
left =false;
right =false;
down =true;}if( e.getKeyChar()=='r'){
score =0;
gameover =false;
up =false;
left =false;
right =true;
down =false;
laenge =3;
jLabel.setText("");}}}
und hier wo es eingebunden wird:
Java:
this.addKeyListener(new java.awt.event.KeyListener(){publicvoidkeyPressed( java.awt.event.KeyEvent e ){if(! gameover ){Key_Listener.keyPressed( e );
rdy.setVisible(false);repaint();}}publicvoidkeyTyped( java.awt.event.KeyEvent e ){}publicvoidkeyReleased( java.awt.event.KeyEvent e ){}});
Habe ich etwas umgeschrieben, sodass der KeyListener in der main class ist und nur die befehlsverteilung der Tasten dort drin ist und das ich nun direkt danach repainten kann.
1. Warum machst du nicht eine Klasse, die das Interface KeyListener implementiert, statt eine anonyme und eine normale Klasse zu schreiben?
2. Was ist this, bzw wovon ist die Klasse abgeleitet?
Hat sich erledigt..
habe in der Key_Listener class den fehler gemacht.. das ich zwar für die variablen die richtigen werte geladen habe.. nur nicht auch wieder gesetzt.. d.h. ich habe up zwar von Snake.up geladen, aber durch up = (wert) nicht in der klasse Snake verändert..^^
blöder fehler aber nunja