Переопределить поведение TAB по умолчанию в JTextPane - PullRequest
5 голосов
/ 05 февраля 2009

Я использую текстовый редактор на основе JTextPane. В настоящее время, когда у меня есть фрагмент выделенного текста, нажатие клавиши TAB удаляет выделенный текст. Я хотел бы изменить это поведение так, чтобы TAB делал отступ для выделенного текста.

Как это сделать?

Ответы [ 2 ]

5 голосов
/ 05 февраля 2009

Что-то вроде:

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

У вас есть классы, которые делают именно это, например этот .

В частности, функция

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

        snapshot (); // snapshot current setup

        if ( isSelection ) { // blockindent

может делать то, что вам нужно.

2 голосов
/ 09 февраля 2009

Другой способ - переопределить действие для компонента JTextArea, связанного с клавишей TAB. Взгляните на ActionMap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...