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.
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. :)
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 :)
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.
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?
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:
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());
}
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?
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.
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.
259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849