Как вы получаете выбранную позицию символа в JTextArea? - PullRequest
2 голосов
/ 28 мая 2010

Вот сложный вопрос!

Позвольте мне сначала рассказать вам мой сценарий, как я реализую решение проблемы.

Я читаю файл журнала и отображаю его в JTextArea. Файл журнала имеет кодировку cp037. Я читал каждый файл как поток байтов или массив байтов из файла журнала и отображал его. В любом случае мне удалось правильно отобразить текст в JTextArea с помощью кодировки символов cp037.

Теперь пользователь может выбрать набор символов в JTextArea. Все, что я хочу, это позиция первого символа выбранного пользователем текста от ближайшего специального символа '+' (его код символа в cp037 равен 4E), который предшествует выделенному тексту. Этот символ может встречаться в нескольких местах JTextArea.

В простом предложении я хочу, чтобы первая позиция символа (из выбранного пользователем текста) находилась рядом с символом '+', который должен происходить до выбранного пользователем текста.

PS: cp037 - это тип схемы кодировки символов, созданный IBM и используемый для мейнфреймов IBM.

Пожалуйста, не стесняйтесь спрашивать меня, если вопрос не ясен ...: ->

Ответы [ 2 ]

3 голосов
/ 28 мая 2010

JTextComponent имеет метод

public int getSelectionStart()

Возвращает начальную позицию выделенного текста. Вернуть 0 для пустого документа или значение точки, если нет выбора.

public String getSelectedText()

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

2 голосов
/ 28 мая 2010

Вам помогут два метода getSelectionEnd(), getSelectionStart() из JTextComponent.

String firstSelectedChar;
String text = textArea.getText();
int selectionStart = textArea.getSelectionStart();
firstSelectedChar = text.substring(selectionStart, selectionStart + 1);

Это может быть похоже на то, что вам нужно.

...