addKeyListener

Status
Nicht offen für weitere Antworten.

SirBaros

Bekanntes Mitglied
Hallo ich habe in dem konstruktor den Keylistener geadded mit addKeyListener! nur da ich ein Image als Background von dem Canvas gemacht habe wird der KeyListener nicht verwedenet bzw der balkne der in dem Keylistener gezeichnet wird ,wird nicht angeziegt weil das bild im vordergrund ist! kann mir jemand helfen?
 

The_S

Top Contributor
Evtl. mit Code deinerseits.

Hab noch nie was mit Canvas gemacht, aber hast du schonmal versucht ob es geht, wenn du es focusable(true) setzt?
 

SirBaros

Bekanntes Mitglied
Code:
public void keyPressed(KeyEvent event)
       {

       	if (event.getKeyCode() == KeyEvent.VK_LEFT) {

         	if(xPos<=15){
         		xPos=15;
         		}
         	g.setColor(new Color(200,200,255));
         	 
         	g.fillRect(0,680,1000,30);
         	g.setColor(Color.BLACK);
         	xPos=xPos-10;
         	g.fillRect(xPos,yPos,breite,hoehe);
         	
         }if (event.getKeyCode() == KeyEvent.VK_RIGHT) {
         	if(xPos>=825){
         		xPos=825;}

         			
         	g.setColor(new Color(200,200,255));
         	g.fillRect(0,680,1000,30);
         	g.setColor(Color.BLACK);
         	xPos=xPos+10;
         	g.fillRect(xPos,yPos,breite,hoehe);
         	
         	}

       
       }
 

The_S

Top Contributor
uh, das is so böse. Setz lieber ein paar Variablen und ruf ein repaint auf, auf die du dann in der paint entsprechend reagierst.
 

SirBaros

Bekanntes Mitglied
wie ruft man einen KeyListener in einer Methode auf weil mit addKeyListener(this) geht es nicht!!
 

L-ectron-X

Gesperrter Benutzer
addKeyKistener(this) steht eigentlich im Konstruktor der Klasse, die sich bei einem KeyListener registriert und auf deren KeyEvents letztendlich gelauscht werden soll.
 

SirBaros

Bekanntes Mitglied
ich hab im Keylistener wie hier im code gezeigt ein balken gezeichnet der sich bewegt wenn man tasten drückt ,hab den Keylistener im Konstruktor geadded!! aber ich hab ein bild als hintergrund reingemacht und der keylistener bzw der balken erscheint nicht und reagiert nicht! muss ich dann den keylistener in die Image methode miteinbinden?wie??
Code:
public void keyPressed(KeyEvent event)
       {

       	if (event.getKeyCode() == KeyEvent.VK_LEFT) {

         	if(xPos<=15){
         		xPos=15;
         		}
         	g.setColor(new Color(200,200,255));
         	 
         	g.fillRect(0,680,1000,30);
         	g.setColor(Color.BLACK);
         	xPos=xPos-10;
         	g.fillRect(xPos,yPos,breite,hoehe);
         	
         }if (event.getKeyCode() == KeyEvent.VK_RIGHT) {
         	if(xPos>=825){
         		xPos=825;}

         			
         	g.setColor(new Color(200,200,255));
         	g.fillRect(0,680,1000,30);
         	g.setColor(Color.BLACK);
         	xPos=xPos+10;
         	g.fillRect(xPos,yPos,breite,hoehe);
         	
         	}

       
       }
       public void keyReleased(KeyEvent event){

       }

       public void keyTyped(KeyEvent event){}
 

L-ectron-X

Gesperrter Benutzer
Wie Hobbit schon sagte. Die momentane Lösung ist nicht gut.
Lege in der keyPressed()-Methode nur Werte (global) fest, die dann in der paint()-Methode gezeichnet werden können.
Immer, wenn du möchtest, dass die Oberfläche neu gezeichnet werden soll, ruftst du repaint() auf.

Sehr wahrscheinlich hat dein Canvas nicht den Focus. Denn es muss den Focus haben, damit es auf die KeyEvents hören kann. Gehts denn, wenn du zuerst mal auf die Canvas-Fläche klickst?

Und was schreibst du eigentlich, ein Applet oder eine Applikation?
 

SirBaros

Bekanntes Mitglied
mhh ich komm nicht drauf wie ich des machen soll!! kann ich es nicht machen irgendwie in einer methode aufzurufen den KeyListener???muss doch gehen!
 

The_S

Top Contributor
Du rufst keinen KeyListener auf, der KeyListener ruft eine Methode (keyPressed, keyReleased, keyTyped) auf, sobald eine Komponente mit KeyListener (component.addKeyListener(this); ) den Fokus hat und eine Taste gedrückt wurde.
 

Brainiac

Bekanntes Mitglied
SirBaros hat gesagt.:
ich hab im Keylistener wie hier im code gezeigt ein balken gezeichnet der sich bewegt wenn man tasten drückt ,hab den Keylistener im Konstruktor geadded!! aber ich hab ein bild als hintergrund reingemacht und der keylistener bzw der balken erscheint nicht und reagiert nicht! muss ich dann den keylistener in die Image methode miteinbinden?wie??

Kann es sein das der Hintergrund nach dem Balken gezeichnet wird? Somit also den Balken überschreibt?
 

SirBaros

Bekanntes Mitglied
ja kann sein!!!ich hab ein ball über das image laufen und der keylistener wird im canvas bewwegt aber nicht auf dem canvas! wie muss ich des machen! weil ich hab des image eingebunden aber ich will es als hintergrund
 

The_S

Top Contributor
Setz das halt erstma so um, wie ich gesagt hab und schau ob der Fehler dann immernoch da ist. Falls ja => Code posten.
 

Brainiac

Bekanntes Mitglied
SirBaros hat gesagt.:
ja kann sein!!!ich hab ein ball über das image laufen und der keylistener wird im canvas bewwegt aber nicht auf dem canvas! wie muss ich des machen! weil ich hab des image eingebunden aber ich will es als hintergrund

Code umstellen wäre, sicher das beste. Auf die schnelle der aufruf zum zeichen des Hintergrundes muß vor dem aufruf des Ballzeichnens sein, dann wird der Ball nicht übermalt. Eigentlich ganz logisch. ???:L
 

SirBaros

Bekanntes Mitglied
ja das hab ich ja gemacht aber wie ist des mim keylistener!!?der wird im Konstruktor geadded!! und im KeyListener wie bei mir was gealt wenn ich nach links und rehcts klicke! aber den kann man nicht Hinter dem Image aufrufen kann man nur im Konstruktor
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben