2017-06-14 5 views
0

So habe ich ein JTextPane und fügte ich so ein keyListener, ich kann, wenn die Taste gedrückt wurde, geben Sie wissen:ein Zeichen (oder ein String) hinzufügen, wenn Eingabe gedrückt wird (in einem JTextPane)

JTextPane textPane = new JTextPane(); 

textPane.addKeyListener(new KeyListener() { 
     @Override 
     public void keyTyped(KeyEvent e) { 
     } 
     @Override 
     public void keyPressed(KeyEvent e) { 

      if(e.getKeyCode() == KeyEvent.VK_ENTER){ 
       // add there the code to add a character to the textPane! 
      } 
     } 
     @Override 
     public void keyReleased(KeyEvent e) { 
     } 
    }); 

Aber jetzt bin ich bloked, wie man ein Zeichen '}' zum TextPane hinzufügt?
(nicht überall, kurz nach der Position des Cursors an folgenden ...)

+4

Verwenden Sie niemals einen KeyListener mit einer Textkomponente wie JTextPane. Wenn Sie ENTER-Tasten drücken wollen, benutzen Sie Key Bindings - oder einen DocumentListener oder vielleicht einen DocumentFilter. –

+0

Diese Fragen beantworten die Lösung, die Sie suchen, glaube ich https://StackOverflow.com/questions/4059198/JTextPane-Appending-A-New-String –

Antwort

2

Wie @HovercraftFullOfEels in den Kommentaren oben vorgeschlagen, keine KeyListener verwenden, um die eingeben Schlüssel zu hören, stattdessen KeyBindings verwenden oder ein DocumentListener. Hier ist ein answer von Hovercraft, das Key Bindings verwendet, obwohl es nicht mit einem JTextPane ist, aber Sie können die allgemeine Idee von dort nehmen.

Um Text in der Position der Einfügemarke anhängen, Sie JTextPane#replaceSelection(String), die von den docs versuchen könnte:

durch die gegebene Zeichenfolge dargestellt

Ersetzt die aktuell ausgewählte Inhalte mit neuen Inhalten. Wenn es keine Auswahl gibt, ergibt dies eine Einfügung des gegebenen Textes. Wenn kein Ersatztext vorhanden ist, führt dies zu einem Entfernen der aktuellen Auswahl. Der Ersetzungstext weist die Attribute auf, die derzeit am Einfügepunkt für die Eingabe definiert sind. Wenn das Dokument nicht bearbeitet werden kann, piepsen und zurückgeben.

Verwandte Themen