#java #swt
#java #swt
Вопрос:
У меня есть экран ввода, где пользователь вводит текстовый элемент управления SWT. По мере ввода пользователем я беру текст, обрабатываю его и показываю в отдельном текстовом элементе управления только для чтения. Длина результирующего текста может быть на несколько символов длиннее входного текста.
Я хотел бы расположить результирующий текстовый элемент управления так, чтобы он всегда показывал строку, в которой пользователь в данный момент вводит текст в элементе управления вводом.
Я могу получить ввод строки курсора с помощью ivTextInput.getCaretLineNumber()
, но нет соответствующего метода для установки номера строки курсора.
Я могу установить положение курсора в результате, используя ivTextResult.setSelection(ivTextInput.getCaretPosition())
, но обработка, которую я выполняю для входного текста, может «подтолкнуть» текст результата к точке, где он не виден без прокрутки.
В идеале отображение текста результата должно сочетаться с отображением текста ввода, чтобы то, что / где вводит пользователь, всегда совпадало с текстом результата.
Я пытался отслеживать дополнительные символы, добавляемые обработкой, но пользователь может добавлять текст в любом месте текстового элемента управления, и в результате беспорядок становится непригодным для использования, плюс то, как SWT text control обрабатывает новые строки, сбивает вычисления.
Комментарии:
1. Возможно, что-то, что используется
Text.setTopIndex
для установки строки вверху2. Ага! Я этого НЕ видел и, более того, НЕ связал бы это с установкой позиции строки. Спасибо. Я настроил его так
ivTextResult.setTopIndex( ivTextInput.getCaretLineNumber() - 1 )
, что он отлично работает
Ответ №1:
Text
есть setTopIndex
способ установить строку, видимую в верхней части элемента управления:
public void setTopIndex(int index)
Комментарии:
1. Ну, да. Согласно комментариям к вопросу, опубликованным за 12 часов до вашего ответа.
2. Поскольку он сделал то, что вы хотите, я опубликовал это как ответ, чтобы это помогло другим людям
3. Если будет выполнен поиск (stackoverflow, Google и т. Д.), Не будет ли этот поиск включать текст вопроса и, следовательно, приводить человека сюда? Где они увидят решение в комментариях? Не пытаясь быть язвительным, я бы ожидал, что это сработает, и, следовательно, не нуждается в «ответе».
4. Комментарии не являются постоянными, они могут быть удалены. Люди ищут вопросы с ответами.