2009-02-05 14 views
5

Sto implementando un editor di testo basato su JTextPane. Attualmente, quando ho un pezzo di testo selezionato, premendo il tasto TAB cancella il testo selezionato. Vorrei cambiare questo comportamento in modo tale che TAB indurrà il testo selezionato.Ignora comportamento predefinito di TAB in JTextPane

Come fare?

risposta

5

Qualcosa lungo la linea del:

public void keyPressed (KeyEvent event) { 
     switch (event.getKeyCode()) { 
      case KeyEvent.VK_TAB : 
       insertTabChar (event.isShiftDown()); 
       event.consume(); 
       break; 
      case KeyEvent.VK_ENTER : 
       snapshot(); 
       insertNewLine(); 
       event.consume(); 
       break; 
     } 
    } 

Avete alcune classi là fuori che fanno proprio questo, come this one.

In particolare, la funzione

/** 
    * manage keyboard tabbing, implementing blockindent. 
    * @param isUnindent 
    */ 
    private void insertTabChar (boolean isUnindent) { 

     snapshot(); // snapshot current setup 

     if (isSelection) { // blockindent 

potrebbe fare proprio quello che serve.

+0

Ho dovuto farlo prima, sembra proprio da qui. – geowa4

2

L'altro modo è ridefinire l'azione per il componente JTextArea associato alla chiave TAB. Dai un'occhiata a ActionMap.

Problemi correlati