2009-02-05 82 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。