TextPane Key Binding

Der folgende Artikel baut auf dem vorigen Artikel zur TextPane Editierbarkeit und Sichtbarkeit auf und ergänzt ihn. Die Steuerung funktioniert bislang nur über die Buttons am oberen Rand der Form und ich möchte die Steuerung nun über die Tastatur ergänzen.

Hierzu sind lediglich ein paar zusätzliche Programmzeilen notwendig, aber Ihr solltet ein paar Stolperfallen vermeiden.

Im Initialisierungsteil der Form lege ich fest, auf welche Tasteneingaben das Programm reagieren soll. Wir haben 4 Buttons und daher lege ich 4 Tastenkombinationen zur Steuerung fest: Control-L, Control-S, Control-E und Control-W. Diese Tastenkombinationen werden intern registriert, wobei ich an dieser Stelle die gewünschten Aktionen noch nicht festlege (Zeilen 45-58 im Quelltext), sondern nur den Namen der auszuführenden Aktion nenne.

Was nach einem Tastendruck auf die Tastenkombination geschehen soll, regele ich mit den Aktionen („Action“) in den Zeilen 158-181 im Sourcecode.

Die letzte Programmanpassung betrifft die Methode „setKeyBinding“, welche die Verbindung zwischen dem Actionlistener und der Form herstellt (Zeilen 183-186). So sieht das fertige Programm in Aktion aus:

Spätestens an dieser Stelle solltet Ihr stutzen und sagen: „warum wähle ich Control-W und nicht Control-V als Steuerzeichen für Sichtbarkeit“? Die Antwort ist sehr einfach: viele Java-Komponenten reagieren bereits auf Steuerzeichen und die Tastenkombination Control-V ist für die Funktion „einfügen“ reserviert. Wenn Ihr also Control-V wählt wird das Programm nicht die „toggleVisible-Methode“ ausführen, sondern einen Text aus der Zwischenablage in die JTextPane einfügen.

Damit Ihr schnell einen Überblick über die reservierten Tastenkombinationen erhaltet könnt Ihr ein kleines Programm namens „KeyBindings.java“ ausführen und Euch Gewissheit verschaffen. In der Rubrik „Allgemeines“ findet Ihr dazu den Sourcecode und die Beschreibung des Programms A20 Key Bindings.

Hier nun die Quellcodes des Programms und der Form, Ihr benötigt intelliJ IDEA zur Nachbearbeitung:

 

Alle Quellcodes zur JTextPane findet Ihr zum Download in meinem Github-Repository, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/JTextPane. Alle Programme sind unter Java 11 lauffähig (vermutlich auch unter Java 8) und wurden mit intelliJ IDEA entwickelt, welches für das eigene „Spielen“ notwendig ist.

Die Lizenz zum obigen Beispiel findet Ihr auf der eigenen Lizenz-Seite.

Letzte Bearbeitung: 19.01.2020