---
title: "hjälp med Keystrokes"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/170956-hjälp-med-keystrokes"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "ecke"
published: "2008-04-22T07:07:54.000Z"
updated: "2008-04-28T20:25:33.000Z"
replies: 20
views: 1060
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/170956-hjälp-med-keystrokes"
---

# hjälp med Keystrokes

_Sida 1 av 2._

## #1 — ecke, 2008-04-22T07:07Z

hej hej, 
den här gången behöver jag lite hjälp med tangenttryckningar, 
om ni undrar så har jag sökt runt en del på internet och testat själv innan jag vänt mig till webforum :) så jag har i alla fall *försökt*  hittat en lösning själv.

men men, problemet är att jag vill försöka göra ett program där till en början t.ex en jframe kommer upp och sedan när man trycker på en bestämd tangent (höger/vänster pil) så ska det komma upp ett litet meddelande.

jag har kommit så långt så att jag kan klicka på vilken tangent som helst och då spelas ett ljud upp, men jag vet inte hur jag ska göra för att det bara ska hända när man trycker på en bestämd tangent.

koden ser ut såhär:

import javax.swing.\*;
import java.awt.event.\*;
import java.awt.\*;
import java.applet.\*;
import java.net.URL;

public class KeyClicker extends JFrame
{
	AudioClip click;

	public static void main(String \[\] args)
	{
		new KeyClicker();
	}

	public KeyClicker()
	{
		JFrame ruta = new JFrame();
		this.setSize(400, 400);
		this.setTitle("Key Clicker");
		this.addKeyListener(new Clicker());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		URL urlClick = MouseClicker.class.getResource("notify.WAV");

		click = Applet.newAudioClip(urlClick);

		this.setVisible(true);
	}

	private class Clicker extends KeyAdapter
	{
public void keyPressed(KeyEvent e)
		{
			System.out.println(e);
			click.play();
			
		}
	}
}

hur ska jag göra för att få någonting att hända när jag trycker på en speciell knapp/tangent?
tack i förhand! Ni killar/tjejer är fantastiska!

Permalänk: https://www.webforum.nu/p/170956

## #2 — SPiN, 2008-04-22T07:16Z

I din klass Clicker och metoden keyPressed(), får du göra en koll på KeyEvent e och jämföra mot tangenten som trycks. Varje tangent har ett unikt nummer (int).

```
...
public void keyPressed(KeyEvent e) {
     if(e.KEY_PRESSED == 13) { // Enter-tangenten trycktes ner
          ...
     }
}
```

Tyvärr har jag ingen lista över vilka tangenter som representeras av vilka heltal, men det borde vara hyfsat enkelt att googla fram. :)

Permalänk: https://www.webforum.nu/p/2102453

## #3 — ecke, 2008-04-22T07:46Z

okay men jag testade att skriva såhär i Clicker klassen:
     public void keyPressed(KeyEvent e) {
     if(e.KEY_PRESSED == 40) { // \<-- neråt pil tangenten.

			click.play();
			}
		else {
			
			System.out.println("du tryckte ner fel tangent");
			}
		}
och ändå så fungerar det inte när jag klickar neråt tangenten. den hoppar över if metoden och går direkt på else. liksom :(
jag har testat med flera andra tangenter också :/
Om ni inte kan se vad som är fel får ni gärna skriva ett eget litet program om nu orkar :)

Permalänk: https://www.webforum.nu/p/2102459

## #4 — SPiN, 2008-04-22T08:02Z

Ah, jag mindes fel. Följande kanske fungerar bättre :)

```
if(e.getKeyCode() == KeyEvent.VK_DOWN) {
...
```

Kolla i API:et för KeyEvent: <http://java.sun.com/javase/6/docs/api/java/awt/event/KeyEvent.html>

Permalänk: https://www.webforum.nu/p/2102463

## #5 — Lime, 2008-04-22T08:22Z

VK\_ står för övrigt för Virtual Key, eftersom olika operativsystem har olika värden på tangenterna.  Skriver du ' == 40' så funkar det i Windowsbaserade system men inte på Mac OS X.

Permalänk: https://www.webforum.nu/p/2102469

## #6 — ecke, 2008-04-22T08:30Z

tack! nu funkade det! :)  sen blir väl kanske nästa steg att försöka göra något som rör sig när man klickar på tangenten :D

Permalänk: https://www.webforum.nu/p/2102474

## #7 — ecke, 2008-04-22T10:16Z

spelprogrammering?

Som jag sa så skulle jag gärna vilja göra ett litet program där man kanske kan flytta en liten boll eller något slags 2D objekt och då undrar jag ifall man **Måste** göra det i en applet?  
jag har kollat lite på internet och i alla "tutorials" jag hittat så har det alltid stått att den ska vara i en applet,  måste det vara så?
om inte så kanske ni kan hjälpa mig att ta fram ett sådant program. :)
om det är okej?

Permalänk: https://www.webforum.nu/p/2102508

## #8 — Lime, 2008-04-22T18:38Z

Nä, måste måste det inte, men det är roligare om man kan få ut sitt spel.

Permalänk: https://www.webforum.nu/p/2102657

## #9 — ecke, 2008-04-22T19:04Z

men man kan väll också få ut sitt spel/program igenom att göra en .jar fil?
eller?

Permalänk: https://www.webforum.nu/p/2102661

## #10 — Compusa, 2008-04-22T20:19Z

Ja det går även bra med en Jar-fil. Det som kan vara smidigt med en applet är att du kan ha ditt spel "inbäddat" i en webbsida.

Java Web Start kan också vara värt att kolla på:
<http://www.java.com/sv/download/faq/java_webstart.xml>

Permalänk: https://www.webforum.nu/p/2102688

## #11 — Lime, 2008-04-23T18:45Z

> **ecke skrev:**
>
> men man kan väll också få ut sitt spel/program igenom att göra en .jar fil?
> eller?

Det ska du alltid göra... Finns väldigt få tillfällen där det inte är lönt att distribuera sina applikationer i Jar-filer.

Permalänk: https://www.webforum.nu/p/2102898

## #12 — ecke, 2008-04-26T14:01Z

ljud + jar = ?

Nu när jag försöker göra en jar fil av programmet som jag gjort som innehåller lite ljud och så vidare, så fungerar det inte..
Det fungerar fortfarande när jag kör programmet i min utvecklingsmiljö *(netbeans & JCreator)* men inte när jag gör det till en jar fil?
**koden ser ut såhär:**

import javax.swing.\*;
import java.awt.event.\*;
import java.awt.\*;
import java.applet.\*;
import java.net.URL;

public class KeyClicker extends JFrame
{
	AudioClip click, click2, click3;
private int i = 0;
	public static void main(String \[\] args)
	{
		new KeyClicker();
	}

	public KeyClicker()
	{
	
		JFrame ruta = new JFrame();
		this.setSize(400, 400);
		this.setTitle("Key Clicker");
		this.addKeyListener(new Clicker());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		URL urlClick = KeyClicker.class.getResource("notify.WAV");
		URL urlClick2 = KeyClicker.class.getResource("chord.WAV");
		URL urlClick3 = KeyClicker.class.getResource("Windows XP - utloggningsljud.WAV");
	
		

		click = Applet.newAudioClip(urlClick);
click2 = Applet.newAudioClip(urlClick2);
click3 = Applet.newAudioClip(urlClick3);
		this.setVisible(true);
			click3.play();
	
	}

	private class Clicker extends KeyAdapter
	{

		
     public void keyPressed(KeyEvent e) {
     if(e.getKeyCode() == KeyEvent.VK_DOWN){ // \<-- neråt pil tangenten.

			click.play();
					JOptionPane.showMessageDialog(KeyClicker.this,"You clicked the down key and it is the right key! \\n It has the number " + e.getKeyCode(),
						"nice work!",JOptionPane.INFORMATION_MESSAGE); 
			}
			else if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
					
					JOptionPane.showMessageDialog(KeyClicker.this,"You clicked the escape button",
						"good bye!",JOptionPane.WARNING_MESSAGE); 
						
							System.exit(0);
			
			}
		else {
			
		click2.play();
	JOptionPane.showMessageDialog(KeyClicker.this,"You clicked the wrong key, sorry! \\n You clicked a button with number " + e.getKeyCode(),
						"sorry",JOptionPane.ERROR_MESSAGE); 
		
			 
			
		}
			
		}
	}
}
***finns det något som man direkt kan säga är fel? eller som behöver ändras?***

Permalänk: https://www.webforum.nu/p/2103386

## #13 — spango, 2008-04-26T15:17Z

Definiera "fungerar inte". Konstiga exceptions? Nåt som inte beter sig som förväntat?

Permalänk: https://www.webforum.nu/p/2103388

## #14 — ecke, 2008-04-26T16:29Z

alltså jag menar att när jag gör min jar fil och sedan klickar på den så händer det inget..
men om jag försöker starta den från C:\\WINDOWS\\system32\\cmd.exe *(ja kommer inte ihåg vad man kallar den*
med koden: 
java -jar "D:\\stuffs\\NetBeans\\projects\\PassF\\dist\\PassF.jar"

så startar den **inte** jar filen, MEN den skriver :

Exception in thread "main" java.lang.NullPointerException
        at sun.applet.AppletAudioClip.\<init\>(Unknown Source)
        at java.applet.Applet.newAudioClip(Unknown Source)
        at KeyClicker.\<init\>(KeyClicker.java:31)
        at KeyClicker.main(KeyClicker.java:13)

jag har ljud filerna på rätt ställe i \\class  mappen och allt fungerar när jag kör det från netbeans & JCreator.

hoppas det hjälpte dig lite på rätt väg kanske :)

Permalänk: https://www.webforum.nu/p/2103391

## #15 — spango, 2008-04-26T17:06Z

Hamnar ljudfilen i JAR:en?

Permalänk: https://www.webforum.nu/p/2103396

## #16 — ecke, 2008-04-26T17:07Z

jag skulle tro det... 
det står att den lägger till ljudfilerna när man "buildar" i netbeans.

Permalänk: https://www.webforum.nu/p/2103397

## #17 — ecke, 2008-04-27T12:53Z

ingen som kan hjälpa mig?

Permalänk: https://www.webforum.nu/p/2103452

## #18 — SPiN, 2008-04-27T17:53Z

Har du försökt med att lägga ljudfilerna separat, utanför jar-filen?

Permalänk: https://www.webforum.nu/p/2103524

## #19 — ecke, 2008-04-27T18:24Z

hur gör man det?
jag är inte så bekant med att skapa jar filer och java överhuvudtaget. :)

Permalänk: https://www.webforum.nu/p/2103529

## #20 — SPiN, 2008-04-27T21:05Z

Jag menade alltså att du inte packar in ljudfilerna i jar-filen, utan har dom utanför den. Andledningen till att bilder och ljudfiler inte brukar fungera i jar-filer är att sökvägen inte stämmer. När du läser in dina ljudfiler kan du också försöka med att använda java.net.JarURLConnection.

Permalänk: https://www.webforum.nu/p/2103565

---

Tråden på webben: https://www.webforum.nu/amne/java/170956-hjälp-med-keystrokes  
Nästa sida: https://www.webforum.nu/amne/java/170956-hjälp-med-keystrokes/page2.md
