Warten auf Tastendruck

Status
Nicht offen für weitere Antworten.
B

Bruegge

Gast
Hallo,

ich möchte in meinem Applet folgendes machen:
An einer bestimmten Stelle soll auf einen Tastendruck gewartet werden, mehr nicht.
Aber ich bekomme das einfach nicht hin :(
 
B

Beni

Gast
Und was hast du bisher gemacht?

Grundsätzlich musst du einen KeyListener implementieren und dem Applet hinzufügen. Dann musst du das Applet "abschliessen" (alle Buttons etc. auf enabled=false setzen), damit keine Benutzereingaben verarbeitet werden, und naja, warten... bis die keyPressed-Methode angesprochen wird.
 
B

Bruegge

Gast
Bislang habe ich noch nicht viel gemacht, aber ist es wirklich notwendig das applet "abzuschliessen" ? Denn nachdem ein Tastendruck erfolgt ist, soll das Applet eigetnlich weitergehen ...
Wie würde die keyPressed-Methode denn aussehen?
 

Wildcard

Top Contributor
Bruegge hat gesagt.:
Bislang habe ich noch nicht viel gemacht, aber ist es wirklich notwendig das applet "abzuschliessen" ? Denn nachdem ein Tastendruck erfolgt ist, soll das Applet eigetnlich weitergehen ...
Wie würde die keyPressed-Methode denn aussehen?
Wenn du nicht willst das der Benutzer in der zwischenzeit irgendwas machen kann, ja.
Beispiel für KeyListener:

Code:
class MyApplet extends JApplet
{
    public void init()
    {
        addKeyListener(new KeyListener()
        {
            public void keyTyped(KeyEvent e)
            {
                // TODO Auto-generated method stub
                doSomething();

            }

            public void keyPressed(KeyEvent e)
            {
                // TODO Auto-generated method stub

            }

            public void keyReleased(KeyEvent e)
            {
                // TODO Auto-generated method stub

            }
        });
    }
}
 

L-ectron-X

Gesperrter Benutzer
Wenn Du nur die keyPressed()-Methode, bzw. nicht alle Methoden des KeyListeners überschreiben musst, kann der Code auch abgekürzt werden.
Code:
import javax.swing.*;
import java.awt.event.*;

public class MyApplet extends JApplet 
{ 
    public void init() { 
        addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) { 
                // Wenn eine Taste gedrückt wurde
            } 
        }); 
    } 
}
 
B

Bruegge

Gast
Also im Prinzip will ich die keyPressed-Menthode garnicht überschreiben, sondern nur, dass eine schleife so lange ausgeführt wird, bis eine Taste gedrückt wird (also keyPressed). Ist das nicht einfacher möglich?
 
B

Bruegge

Gast
stimmt.. mir fällt gerade auf das der ja schlecht gleichzeitig eine schleife durchlaufen kann UND auf einen tastendruck warten .. ach mist, ich mach das jetzt so, dass der einfach nur 10 sekunden wartet, anstatt auf nen Tastendruck *aufgib*
Trotzdem vielen Dank für die Hilfe!! :)
 

Wildcard

Top Contributor
Bruegge hat gesagt.:
stimmt.. mir fällt gerade auf das der ja schlecht gleichzeitig eine schleife durchlaufen kann UND auf einen tastendruck warten .. ach mist, ich mach das jetzt so, dass der einfach nur 10 sekunden wartet, anstatt auf nen Tastendruck *aufgib*
Falsche Einstellung! Irgendwann musst du's sowieso lernen :wink:
 
B

Bruegge

Gast
Ja... das stimmt schon aber ich glaube für mein Problem reicht es, wenn ich ein delay von 10 Sekunden mache, und fertig ;)

Gibt es irgendwo ein Tutorial zu dem Thema?
 

Hansdampf

Bekanntes Mitglied
ungefähr so:
Code:
while(!keyhit){try{Thread.sleep(100);}catch(Exception e){}}
dann im KeyListener beim Tastendruck keyhit auf true setzen,fertsch. Der AWT Thread wird nicht unterbrochen, der läuft extra.
 
B

Bruegge

Gast
hmm also das funktioniert nicht so richtig, der kommt aus dieser while-schleife nicht raus, also reagiert nicht auf einen tastendruck. Ich habe den keylistener geändert und eigetnlich müsste es gehen...
 
G

Guest

Gast
rufst du das aus einem AWT Tread auf? Darf nämlich nich, sonst wird der blockiert. Poste mal deinen Code auschnittsweise.
 
G

Gast

Gast
Hallo,

setz doch einfach eine GlassPane ein. Also wenn der Event startet, GlassPane setzen, dann wenn einer ne Taste drückt, GlassPane wieder wegnehmen.
 
B

bruegge

Gast
ich hab das jetzt erstmal so gemacht, dass ich einfach nur nen delay hab. Das reicht für mein Problem aus. Trotzdem danke!!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben