Ключ ввода не работает при реализации DocumentFilter - PullRequest
0 голосов
/ 09 декабря 2011

Я реализовал фильтр документов, унаследовав класс DocumentFilter orignal и заменив его методы insert и replace.Он реагирует на все клавиши, кроме клавиши Enter .Я имею в виду, что когда я нажимаю Enter , он должен перейти к следующей строке в моем JTextPane, но это не так.Итак, как мне заставить мой Enter ключ работать правильно?

Код

class UrduFilter extends DocumentFilter {
//My urdu filter overriding insertString and replace
    char urduChar;
    String urduString;

    public void insertString(DocumentFilter.FilterByPass fb, int offset,
            String text, AttributeSet attr) throws BadLocationException {
        System.out.println("\n" + text);
        urduChar = Translate.translateToUrdu(text.charAt(0));
        urduString = Character.toString(urduChar);
        fb.insertString(offset, urduString, attr);
    }

    //no need to override remove(): inherited version allows all removals

    public void replace(DocumentFilter.FilterByPass fb, int offset, int length, 
            String text, AttributeSet attr) throws BadLocationException {
        urduChar = Translate.translateToUrdu(text.charAt(0));
        System.out.println(text + " ... " + text.charAt(0));
        urduString = Character.toString(urduChar);
        fb.replace(offset, length, urduString, attr);
    }
}

Спасибо.

Ответы [ 3 ]

3 голосов
/ 09 декабря 2011

Что Translate.translateToUrdu(char) делает с символом ввода (13)? Это кажется проблемой, так как вы говорите, что не используете ActionListener

3 голосов
/ 09 декабря 2011

Я имею в виду, как заставить каретку перейти на следующую строку с помощью keyListener или actionListener?

По умолчанию при нажатии клавиши Enter в документ вставляется символ новой строки.

Если вам не нравится это поведение, вам нужно заменить действие по умолчанию наВаше собственное действие, которое помещает каретку в начало следующей строки.

Прочтите Связывания клавиш для получения дополнительной информации о том, как это сделать.Когда вы создаете свое собственное действие, вы можете использовать класс Text Utilities , чтобы помочь вам расположить карат на следующей строке.

0 голосов
/ 09 декабря 2011

Попробуйте использовать addKeyListener() и обработайте клавишу Enter вручную

...