2012-02-16 3 views
1

Как найти позицию курсора в текстовом поле Java, где текст хранится в StringBuffer? Я пытаюсь реализовать функцию backspace в текстовом редакторе. В API перечислены способы установки данных. Мне нужно получить позицию курсора, чтобы узнать, на каком знаке находится курсор, а не на экранные глобальные координаты курсора.Позиционирование курсора на основе строки

Любая помощь искренне ценится.

+0

Как именно вы управляете текстом, то есть как связаны и обновляются JTextArea и StringBuffer? Вы подклассифицируете AbstractDocument/AbstractDocument.Content? Можете ли вы показать нам код? – DNA

+0

Я не использую JTextArea. Это было просто для того, чтобы уяснить мой вопрос. Пользовательский интерфейс редактора расширен с JFrame. Как представить код? Я бы сказал, что эта область редактирования довольно длинная. –

ответ

2

Вы должны написать KeyListeners для событий нажатия клавиш в TextArea и сохранить виртуальный курсор, где вы находитесь, в TextArea. Затем сопоставьте это смещение в StringBuffer, нет волшебного способа сделать это.

+0

Благодарим вас за советы Jarrod Roberson –

1

Если вы используете Swing JTextArea, используйте JTextArea.getCaretPosition().

Если вы используете AWT TextArea, см. Ответ Джаррода Роберсона.

+0

Программирование пользовательского интерфейса (и программирование в этом отношении) по-прежнему нова для меня, и я даже не думал рассматривать Swing или AWT. Мне просто сказали, что было бы полезно учиться на этом деле, и представила пользовательский интерфейс с ручным кодированием с голыми костями, чтобы попытаться справиться. Спасибо за ввод. Он загорается. –

+0

Свинг более сложный для изучения, но более гибкий и мощный, чем AWT. Вы можете найти [эту статью] (http://www.ibm.com/developerworks/grid/library/os-swingswt/), сравнивая AWT, Swing и SWT. –

+0

Вы не можете себе от этого завидовать. Я искренне благодарен, Кевин К. –