Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: keyevent in java

Sivun loppuun

jonez [03.09.2004 22:06:59]

#

Eli tämmönen koodinpätkä ei anna erroria mutta ei silti toimi.

public void paint(Graphics g){
	g.fillRect(pelaajan_paikka_x, pelaajan_paikka_y, 16, 16);
	g.drawString("ENRGIA:" + pelaajan_paikka_x, 0, 145);
	}
	 public void KeyPressed(KeyEvent e){
        String nappi= e.getKeyText(e.getKeyCode());
       if (nappi.equals("e")){
       	pelaajan_paikka_x += 16;
   	repaint();
	        }

Sami [03.09.2004 22:48:01]

#

Luultavimmin vika on siinä, että et ole missään vaiheessa lisännyt KeyListeneriä, jonka voit tehdä näin:

addKeyListener(this);

Ainakin appletissa hyvä paikka lisätä tuo listener on init:issä.

jonez [03.09.2004 23:31:46]

#

addKeyListener(java.awt.eventKeyListener) in java.awt.Component cannot be applied to (testi)

Pukkaa tollasta erroria eli ilmeisesti se ei löydä/anna ottaa KeyListeneriä, riittääkö sinne

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

?

tsuriga [03.09.2004 23:35:35]

#

Eikös sen metodin nimi ole muuten keyPressed?
public void keyPressed(KeyEvent ke)

jonez [04.09.2004 01:39:02]

#

Ei auta vaikka testasin, samaa valittaa nyt edelleen.

Sami [04.09.2004 01:55:59]

#

kuinkahan pitkä koodi on kyseessä? Jos se ei ole mitenkään älyttömän pitkä, niin voit pastettaa sen tänne tai lähettää sähköpostilla.

jonez [04.09.2004 02:06:05]

#

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class testi extends java.applet.Applet{

	 public void init () {
        setBackground(Color.green);
        addKeyListener(this);

        }
	int pelaajan_paikka_x = 64;
	int pelaajan_paikka_y = 64;
	int healtti = 100;



	public void paint(Graphics g){
	g.fillRect(pelaajan_paikka_x, pelaajan_paikka_y, 16, 16);
	g.drawString("ENRGIA:" + pelaajan_paikka_x, 0, 145);
		setBackground(Color.green);
	}
	 public void keyPressed(KeyEvent e){
        String nappi= e.getKeyText(e.getKeyCode());
       if (nappi.equals("e")){
       	pelaajan_paikka_x += 16;
   	repaint();
	        }

	}}

renni [04.09.2004 10:18:29]

#

jonez kirjoitti:

addKeyListener(java.awt.eventKeyListener) in java.awt.Component cannot be applied to (testi)

Sanoo ihan selkeästi, että addKeyListenerille antamasi parametri (this) ei ole java.awt.event.KeyListener. (korjasin pisteen väliin). Toisin sanoen luokkasi ei implementoi tuota vaadittua interfacea. Muuta luokan esittely muotoon

public class testi extends java.applet.Applet implements java.awt.event.KeyListener {

jonez [04.09.2004 13:02:04]

#

testi.java:5: testi is not abstract and does not override abstract method keyTyped(java.awt.event.KeyEvent) in java.awt.event.KeyListener
public class testi extends java.applet.Applet implements java.awt.event.KeyListener{

Tollasta valittaa.

tsuriga [04.09.2004 14:00:39]

#

public class testi extends java.applet.Applet {
laita ihan vaan:

public class testi extends Applet implements KeyListener {

Ja sitten, koska KeyListener on rajapinta niin sun pitää määritellä kaikki tarvittavat metodit, tyyliin:

public void keyTyped(KeyEvent ke) { }
public void keyPressed(KeyEvent ke) { }
public void keyReleased(KeyEvent ke) { }

Laitat halutut toiminnot sitten oikeaan metodiin.

  String nappi= e.getKeyText(e.getKeyCode());
  if (nappi.equals("e")) {..

Tuon voi tehdä myös näin:

  if (ke.getKeyCode()==KeyEvent.VK_E) { // käytän "ke" e:n tilalla, tottumus

Lisää täältä.

EDIT: Muotoilu. Vois iskee linkkiohjeet ohjeisiin.

jonez [04.09.2004 14:46:27]

#

Kiitos kiitos sain toimimaan.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta