2012-01-07 4 views
0

Я пишу эмулятор vt100, и я использую JTextPane с DefaultStyledDocument для отображения форматированного текста. Теперь я хочу реализовать backspace, поэтому мне нужно удалить последний символ.Удалить последний символ из JTextPane

Я попробовал следующее:

doc.remove(doc.getEndPosition().getOffset()-1, doc.getEndPosition().getOffset()); 

Но я постоянно получаю 'javax.swing.text.BadLocationException: Invalid удалить'

Как это должно быть сделано?

+0

Чтобы полностью выяснить и продемонстрировать свою проблему, рассмотрите возможность создания и публикации небольшой компилируемой и исполняемой программы, которая демонстрирует проблему для нас, [SSCCE] (http://SSCCE.org). –

ответ

2

Вы используете API неправильно. Последним параметром является количество символов для удаления, которое в вашем случае должно быть 1.

Вот API для Document.remove(int, int).

+0

Спасибо за ответ, я неправильно разобрал javadoc. Я все еще не могу понять, как заставить его работать. С помощью этого утверждения: doc.remove (doc.getLength() - 2, 1); Я могу только удалить символ один раз. –

+0

Это утверждение удаляет один символ. Вы говорите, что это не работает, если вы снова назовете это? – Paul

+0

Я нашел правильные обозначения. Последний символ можно удалить с помощью doc.remove (doc.getLength() - 2, 2) ;. –

Смежные вопросы