Swing: программно выделить текст - PullRequest
1 голос
/ 06 мая 2010

У меня очень простой графический интерфейс Swing с JTetxtArea. Я пытаюсь программно выделить часть текста, используя:

textArea.select(startSelection,endSelection);

Эта работа. Однако, как только я добавляю некоторые другие компоненты в GUI, я больше не вижу выбора

frame.getContentPane().add(button);     
frame.getContentPane().add(textArea);
textArea.select(startSelection,endSelection);

Я подозреваю, что во время компоновки графического интерфейса, какое-то событие вызывает отмену выделения текста. Я прав? И кто-нибудь может предложить решение?

Моя цель - иметь программу, которая отображает текст и позволяет пользователю вводить начальную и конечную позиции выбора, и выбор появляется между этими двумя позициями. Спасибо.

Ответы [ 2 ]

4 голосов
/ 07 мая 2010

Выбор текста отображается только тогда, когда текстовый компонент имеет фокус.

Текстовые компоненты также поддерживают «подсветку» с помощью метода getHighlighter (). AddHighlight (). В этом случае выделение остается независимо от того, имеет ли компонент фокус или нет.

Если вам нужна дополнительная помощь, опубликуйте SSCCE , который демонстрирует проблему.

0 голосов
/ 19 июня 2015

Если то, что вы действительно хотите, это просто выделение, а не выделение (которое ведет себя по-разному), вы можете использовать JTextComponent.getCaret().setSelectionVisible(true).

...