2009-02-05 127 views
5

我正在實現基於JTextPane的文本編輯器。 當前,當我有一段選定的文本時,按TAB鍵將刪除所選文本。我想改變這種行爲,使TAB將縮進選定的文本。覆蓋JTextPane中TAB的默認行爲

如何去呢?

回答

5

東西沿着線:

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; 
     } 
    } 

你有一些班列有哪些做到這一點,像this one

尤其是功能

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

     snapshot(); // snapshot current setup 

     if (isSelection) { // blockindent 

可能正是你需要的做的。

+0

我不得不這樣做,它看起來就是從這裏開始的。 – geowa4 2009-02-05 13:45:29

2

另一種方法是重新定義與TAB鍵相關聯的JTextArea組件的操作。看看ActionMap。