Ich habe meinem JTextArea-Feld einen Keylistener hinzugefügt, aber er verhält sich nicht wie erwartet.
%Vor%Ich will das: - Wenn die Zurück-Taste gedrückt wird und die Verschiebung nach unten ist: eine neue Zeile hinzufügen. - Wenn der Zurück-Button gedrückt wird und der Shift-Button nicht gedrückt ist: keine neue Zeile, sondern submit.
Jetzt verhält es sich so: - Wenn ich den Zurück-Button drücke und die Shift-Taste gedrückt wird: keine Zeile hinzugefügt. Nichts passiert. - Wenn ich die Zurück-Taste drücke und die Umschalttaste nicht gedrückt ist: Gesendet, aber wenn ich erneut tippe, beginnt es in einer neuen Zeile.
Weiß jemand, wie man macht, was ich will?
BEARBEITEN:
Ich habe einen anderen Code ausprobiert, um zu erkennen, ob die Umschalttaste gedrückt ist:
%Vor%Dies funktioniert nicht so gut
Sie können InputMap
und ActionMap
von JTextArea
verwenden, um die Schlüsselstriche Aktionen zuzuordnen:
Die ursprüngliche Aktion für ENTER
- "insert-break" - wird für shift ENTER
verwendet.
Anstatt die Aktionen sofort beim Empfang des Ereignisses auszuführen, sequenzieren Sie sie für später, indem Sie sie mit SwingUtilities.invokeLater () posten. Der Code sollte wie folgt aussehen:
%Vor%Meiner Meinung nach bestehen die Probleme hier darin, dass anwendungsdefinierte Aktionen und interne Aktionen nicht ordnungsgemäß sequenziert werden, was dazu führt, dass vor dem Ändern des Texts Wiederholungen auftreten.