Tastaturabfrage

bernii

Mitglied
Hi, ich krieg das mit der Tastatur abfrage einfach nicht hin. Ich hab mal ne simple Testklasse erstellt.

Java:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class testclass extends java.applet.Applet
{
    int zaehler = 0;
    
    public boolean keyDown(Event evt, int key)
    {
        if(key == 32)
        {
            zaehler++;
        }
        return false;
    }
    
    public void paint(Graphics g)
    {
        g.drawString("Zaehler: " + zaehler, 100,100);
    }
}

Wenn ich die Leertaste drücke, ändert sich der Zähler aber nicht.
Danke für hilfreiche Antworten =)
 

Marco7757

Aktives Mitglied
Du brauchst noch einen KeyAdapter!

Java:
new KeyAdapter(

public void keyReleased(KeyEvent ev)
    {
int key = ev.getKeyCode();
        if(key == 32)
        {
            zaehler++;
        }
        return false;
    }
);

Diesen musst du auf ein Objekt der Benutzeroberfläche legen.
 

bernii

Mitglied
Wie meinst du das mit dem Objekt auf der Benutzeroberfläche?
Ich wollte das jetz mal so machen, aber das klappt auch nicht:


Java:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class testclass extends java.applet.Applet
{
    int zaehler = 0;
    
   public void change()
   {
    addKeyListener(new KeyAdapter()
    {
        public void keyReleased(KeyEvent ev)
        {
            int key = ev.getKeyCode();
            
            if(key == 32)
            {
                zaehler++;
            }
        }
    });
}
      
    
    public void paint(Graphics g)
    {
        g.drawString("Zaehler: " + zaehler, 100,100);
    }
}
 

Marco7757

Aktives Mitglied
Also, ich habe zwar noch nie ein Applet für das Internet gemacht, aber normalerweise hast du doch irgendwo ein Panel oder ein Button oder irgendetwas, das die Aktion auffangen soll. Auf dieses Objekt musst du dann den Adapter setzen.

Also
Code:
panel.addKeyListener(usw....);
 

icarus2

Top Contributor
Dann hängst du den Listener an das Applet ran.

[Java]
this.addKeyListener(usw....);
[/Java]

*Edit
Sry, oben zu ungenau gelesen... das hast du ja bereits versucht.
 

eRaaaa

Top Contributor
macht doch kein Sinn das in eine Methode zu schreiben (change() ) welche garnicht aufgerufen wird...
Probuiers mal so:
Java:
public class testclass extends java.applet.Applet {
    int zaehler = 0;

    {
	addKeyListener(new KeyAdapter() {
	    public void keyReleased(KeyEvent ev) {
		int key = ev.getKeyCode();
		if (key == 32) {
		    zaehler++;
		    repaint();
		}
	    }
	});
    }

    public void paint(Graphics g) {
	g.drawString("Zaehler: " + zaehler, 100, 100);
    }
}
 

bernii

Mitglied
okee danke in der textklasse klappt das jetzt so, nur leider in der richtigen klasse nicht, verdammt,
hm ich probiers morgen wieder aus,
gibt es vielleicht noch andere möglichkeiten :p
 

bernii

Mitglied
Ja, danke es lag tatsächlich daran, dass sich das Event in einem Button abgespielt hat und es deshalb nicht ging.

Ty für den Support:applaus:
 

Ähnliche Java Themen

Neue Themen


Oben