Gå til innhold

Hjelp / forklaring for riktig bruk av KeyEvent behøves.


Anbefalte innlegg

Hei!

 

Jeg sitter å tukler litt med java, har drevet med java i 2-3 måneder og fikk lyst til å prøve meg på noe så enkelt som å flytte et bildet ved hjelp av piltastene. (Noe som viste seg å ikke være så enkelt likevel:P)

 

Jeg har googlet litt og prøvd meg med KeyListener og KeyEvent.. Har laget en kode med en firkant som jeg har tenkt å flytte på.. Den kompilerer og firkanten vises, men jeg klarer ikke å flytte den med piltastene:P

 

Jeg skjønner rett og slett ikke hvordan jeg skal bruke KeyEvent og KeyListener:P

 

Koden er muligens litt rotete siden jeg flyttet på en del ting i håp om at det skulle gi utslag.

 

Legger ved koden så kan dere se om jeg er på riktig vei.

 

import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

class Vindu extends JFrame{
public Vindu(String tittel){
	setTitle("Flytte firkant med piltaster ");
	setSize(800,600); // bredde, høyde.
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	Tegning tegningen = new Tegning();
	add(tegningen);
	}
}

class Tegning extends JPanel{
	int x = 0;

	public void keyTyped(KeyEvent e){
		while(e.getKeyCode() != KeyEvent.VK_ESCAPE){
			switch (e.getKeyCode()){
				case KeyEvent.VK_RIGHT:
					x++;
				case KeyEvent.VK_LEFT:
					x--;
				}
			}
			this.repaint();
		}
		public void paintComponent(Graphics tegneflate){
		super.paintComponent(tegneflate);
		tegneflate.drawRect(x,x,20,20);
	}
}


class NyTest{
public static void main(String[]args){
	Vindu etVindu = new Vindu("Flytte firkant med piltaster ");
	etVindu.setVisible(true);

	Tegning tegning = new Tegning();

}
}

Lenke til kommentar
Videoannonse
Annonse

Nå har jeg ikke programmert i Java på noen år, men tror du må gjøre noe tilnærmet dette:

 

class Tegning extends JPanel implements KeyListener {
	int x = 0;

               public Tegning() {
                   addKeyListener(this);
               }

               public void keyPressed(KeyEvent evt) {
               }

               public void keyReleased(KeyEvent evt) {
               }

	public void keyTyped(KeyEvent e){
		while(e.getKeyCode() != KeyEvent.VK_ESCAPE){
			switch (e.getKeyCode()){
				case KeyEvent.VK_RIGHT:
					x++;
				case KeyEvent.VK_LEFT:
					x--;
				}
			}
			this.repaint();
		}
		public void paintComponent(Graphics tegneflate){
		super.paintComponent(tegneflate);
		tegneflate.drawRect(x,x,20,20);
	}
}

Lenke til kommentar
  • 1 år senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...