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(); }
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ä.
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.*;
?
Eikös sen metodin nimi ole muuten keyPressed?
public void keyPressed(KeyEvent ke)
Ei auta vaikka testasin, samaa valittaa nyt edelleen.
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.
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(); } }}
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 {
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.
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.
Kiitos kiitos sain toimimaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.