JTextArea neue Zeile bei Shift + Enter

7

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

    
dododedodonl 29.01.2010, 13:25
quelle

3 Antworten

21

Sie können InputMap und ActionMap von JTextArea verwenden, um die Schlüsselstriche Aktionen zuzuordnen:

%Vor%

Die ursprüngliche Aktion für ENTER - "insert-break" - wird für shift ENTER verwendet.

    
Carlos Heuberger 29.01.2010, 15:36
quelle
1

Versuchen Sie es mit keyTyped und nicht mit keyPressed. Ich glaube, keyPressed gibt Ihnen ein Ereignis für die Verschiebung und für die Eingabe, während keyTyped Ihnen ein kombiniertes Ereignis mit einem Modifikator gibt.

    
Pace 29.01.2010 13:43
quelle
0

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.

    
user261849 29.01.2010 14:17
quelle

Tags und Links