2017-07-07 5 views
-2

ausführen Ich mache ein verteiltes paralleles Spiel online mit Java und Swing. Ich möchte das Symbol des Spielers aus der Spielzone entfernen, wenn der Benutzer [x] drückt, um das Fenster zu schließen. Wie kann ich der VM sagen, eine Funktion auszuführen, bevor der Prozess beendet wird?Code beim Drücken auf [x]

+0

Alle Versuche? Irgendein Code, den Sie zur Verfügung stellen können? – AscendedKitten

Antwort

2

Vorausgesetzt Sie haben eine JFrame verwenden, stellen Sie die Standardschließungsoperation tun DO_NOTHING_ON_CLOSE und fügen Sie einen WindowListener auf windowClosing zu reagieren.

Diese Methode kann tun, was immer benötigt wird und dann nur dispose das Fenster, um es tatsächlich zu schließen.

Hinweis: Dies kann auch den Benutzer fragen, verwendet werden, wenn sie/er wirklich beenden will ...

0

Wenn Sie eine JFrame verwenden, denke ich, sollten Sie besser Ihre eigenen KeyEventDispatcher schreiben wie beschrieben in that post: Unresponsive KeyListener for JFrame Wenn Sie nur einen KeyListener zu einem JFrame hinzufügen und wenn Sie auswählbare Komponenten darauf platziert haben, müssen Sie den Listener zu all diesen Komponenten hinzufügen, vermutlich rekursiv.

Sie können dann erkennen, wenn jemand x drückt und dann die Dispose-Funktion des JFrame aufruft. Wenn Sie Ihrem JFrame auch einen WindowListener hinzufügen, können Sie Code in die windowClosing-Methode einfügen, die vor dem Schließen des Frames aufgerufen wird.

Verwandte Themen