Java Applet: KeyEvent frisst eingaben für TextField

nintendoluk

Commander
Registriert
Mai 2014
Beiträge
2.129
Hallo Nochmal,

ich habe wieder ein Problem mit meinem Spiel, das ich in einem Applet gebastelt hab. Ich wollte ein TextFeld einfügen, es erscheint auch, jedoch lässt sich nichts reinschreiben.
Code:
TextField inputLine = new TextField("Spielername", 15);
Das ist einfach ein Textfeld, das durchgehend zu sehen ist und jedes mal wenn eine Runde beendet wird zum Highscore speichern abgefragt wird. Mittlerweile habe ich herausgefunden das die Eventhandler für Tasteneingaben (keyUp, keyDown), die Eingaben verschlucken und offensichtlich nicht bis zum TextFeld durchlassen, wenn ich keyUp/keyDown auskommentiere gehts nähmlich.
Die beiden Methoden sehen bei mir so aus:
Code:
    public boolean keyDown(Event e, int key)
    {
        if(key == 1006)
            x_left = -6;
        else
        if(key == 1007)
            x_right = 6;
        else
        if(key == 32)
            jumping = true;
        return true;
    }

    public boolean keyUp(Event e, int key)
    {
        if(key == 1006)
            x_left = 0;
        else
        if(key == 1007)
            x_right = 0;
        else
        if(key == 32)
            jumping = false;
        return true;
    }

Hat vielleicht einer von euch eine Idee, wie ich dieses Problem lösen kann? Oder hat einer von euch eine Alternative parat, wie man den Spielernamen noch eingeben könnte? (Sollte aber für einen Java-Anfänger verständlich sein, bitte ^^ )

Schonmal danke im voraus :-)

Gruß
Lukas
 
vorweg erstmal die frage warum du awt benutzt... das wurde gegen 97 von swing abgelöst.

kann dir jetzt leider nich sagen warum das nich so will, wie du dir das vorstellst aba tricks doch einfach, wenn du die key-events schon hast...
bsp.:
PHP:
inputLine.setText(inputLine.getText() + key.toString());
is vllt nich schön aber das wird dir mit awt egal sein :P
 
Ich zitiere mal vom 1. Googletreffer (Stackoverflow):
Don't use methods that were deprecated in Java 1.1. Instead implement a KeyListener or use key bindings.

Wenn du das nicht willst, versuch' es mal mit return false;

@tsukabaru: Die Lösung ist nicht nur nicht schön, die funktioniert auch nur, wenn man Zeichen ausschließlich anhängen will :P
 
Darlis schrieb:
Wenn du das nicht willst, versuch' es mal mit return false;

Wow, danke das hat geholfen :-D Ich dachte das wäre so nichtssagend wie der return 0; von C++ ( int main() ) ^^

Kann mir vielleicht noch einer erklären, warum das so funktioniert? Was bedeutet des return false; ?

Nochmal vielen Dank Darlis :-)
 
nintendoluk schrieb:
Was bedeutet des return false; ?
Soll ich dir jetzt ein Tutorial zu Methoden rausgoogeln oder die Dokumentation zu Applet.keyUp?
 
"Allgemein" wird der Rückgabewert bei "solchen Methoden" nicht gebraucht, siehe die modernen Varianten der Key-Events.
 
Aus der Java 1.0.2-Doku: "Returns true if the event is handled and should not be passed to the parent of this component." -> Das Textfeld als Elternkomponente erhält die Eingabe nicht, wenn du true zurückgibst.

Seit Java 1.1 (von 1997) deprecated (nebenbei: Java 8 ist die aktuelle Version), und sollte heute nicht mehr verwendet werden. Wie bereits weiter oben erwähnt wäre Swing die richtigere Wahl.
 
Zurück
Oben