2015-05-03 2 views
0

Я хотел постоянно отслеживать, что введено в JTextArea, поэтому я хочу получить последний входной символ в JTextArea каждый раз, когда пользователь что-то вводит.Получить последний входной символ в JTextArea

Я могу выйти со всей рабочей программой. Однако, как я получить последний введенный символ заключается в следующем:

textArea.getText().charAt(textArea.getText().length()-1); 

Таким образом, у меня всегда есть, чтобы получить всю строку текста из JTextArea первой.

Мой вопрос:: Есть ли лучший способ позволить мне получить последний входной символ, не получив сначала весь текст из JTextArea?

+0

Почему, по вашему мнению, проблема «получить весь текст»? – isnot2bad

+0

Я думаю о 'getDocument()' и использовать объект документа. – user3437460

+0

@ isnot2bad Не думаете ли вы с точки зрения реализации, что-то очень неправильно, если мне нужно получить весь текст для каждого нажатия клавиши, который я нажимаю? Что, если текст составляет миллион символов? Не повлияет ли это на эффективность? – user3437460

ответ

2

Вы можете запросить любую часть JTextArea:

Document doc = textArea.getDocument(); 
String lastCharAsString = doc.getText(doc.getLength() - 1, 1); 

Если даже заботиться о создании одной символьно- String каждый раз, это может быть и другое решение, которое даже не создать String экземпляр:

Segment seg = new Segment(); // can be reused 
Document doc = textArea.getDocument(); 
doc.getText(doc.getLength() - 1, 1, seg); 
char last = seg.last(); // equal to seg.first() 
1

Как насчет использования DocumentListener? http://docs.oracle.com/javase/tutorial/uiswing/components/generaltext.html#doclisteners Основной объект для JTextArea - это документ. Таким образом, вы можете захватить требуемое событие обновления, получить последний входной символ, а сохранить его в переменной. Предполагая, что это то, что вы ищете.

+0

Это самый подходящий ответ! Объекты '' DocumentEvent'' также предоставляют вам доступ к базовому документу ('' DocumentEvent.getDocument() ''), расположение изменения ('' DocumentEvent.getOffset() '') и длину ('' DocumentEvent .getLength() ''). – PAX

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