覆盖JTextPane中TAB的默认行为

时间:2009-02-05 13:09:25

标签: java swing

我正在实现一个基于JTextPane的文本编辑器。 目前,当我有一段选定的文本时,按TAB键会删除所选的文本。我想更改此行为,以便TAB将缩进所选文本。

如何去做?

2 个答案:

答案 0 :(得分: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

可能会满足您的需求。

答案 1 :(得分:2)

另一种方法是重新定义与TAB键关联的JTextArea组件的操作。看看ActionMap。