- java.lang.Object
-
- javafx.scene.control.TextFormatter.Change
-
- Все реализованные интерфейсы:
Cloneable
- Вложенный класс:
- TextFormatter<V>
public static final class TextFormatter.Change extends Object implements Cloneable
Содержит состояние, представляющее изменение содержимого или выделения для TextInputControl. Этот объект передается любому зарегистрированномуformatterв TextInputControl всякий раз, когда текст TextInputControl изменяется.Этот класс содержит состояние и вспомогательные методы для определения произошедшего изменения на элементе управления. Он также содержит ссылку на сам TextInputControl, так что разработчик может запросить любое другое состояние элемента управления. Обратите внимание, что вы никогда не должны изменять состояние элемента управления непосредственно из обработчика форматирования.
Изменение текста описывается диапазоном (
getRangeStart(),getRangeEnd()) и текстом (getText(). Возможны 3 случая:-
Было удалено некоторое количество текста: В этом случае,
textпустое, аrangeобозначаетrangeудаленного текста. Например, при удалении второго слова из текста "Lorem ipsum dolor sit amet",rangeбудет (6,11), аtextпустым. Аналогично, если вы хотите удалить другой или дополнительный текст, просто задайтеrange. Если вы хотите удалить первое слово вместо второго, просто вызовитеsetRange(0,5) -
Было добавлено некоторое количество текста: Теперь
rangeпустое (значит, ничего не удалялось), но его значение по-прежнему важно. Начало и конецrangeуказывают на индекс, куда был добавлен новый текст. Например, добавление "ipsum " к "Lorem dolor sit amet" приведет к изменению сrange(6,6) иtextсодержащим строку "ipsum ". -
Некоторые текст был заменён: Сочетание двух предыдущих случаев. И
text, иrangeне пусты. Текст вrangeудаляется и заменяетсяtextв Change. Новый текст добавляется вместо старого, который находится в началеrange. Например, при удалении некоторого текста, вы можете просто заменить его некоторым текстом-заполнителем, просто задав новый текст (setText("new text"))
Change изменяемый, но не наблюдаемый. Он должен использоваться только на протяжении жизни одного изменения. Предполагается, что Change будет изменён внутри обработчика форматирования.
- С:
- JavaFX 8u40
-
Краткое описание методов
Все методыМетодыКонкретные методы Модификатор и тип Метод Описание TextFormatter.Changeclone()intgetAnchor()Получает новый якорь.intgetCaretPosition()Получает новое положение курсора.ControlgetControl()Получает элемент управления, связанный с этим изменением.intgetControlAnchor()Получает текущее положение якоря элемента управления.intgetControlCaretPosition()Получает текущее положение курсора элемента управления.StringgetControlNewText()Получает весь новый текст, который будет использован в элементе управления после этого изменения.StringgetControlText()Это весь текст, который был у элемента управления до изменения.intgetRangeEnd()Получает конечный индекс вTextInputControl.getText()для изменения.intgetRangeStart()Получает начальный индекс вTextInputControl.getText()для изменения.IndexRangegetSelection()Получает выделение этого изменения.StringgetText()Получает текст, используемый в этом изменении.booleanisAdded()Получает, было ли это изменение ответом на добавление текста.booleanisContentChange()Изменение содержимого — это любое из изменений: добавление, удаление или замена.booleanisDeleted()Получает, было ли это изменение ответом на удаление текста.booleanisReplaced()Получает, было ли это изменение ответом на замену текста.voidselectRange(int newAnchor, int newCaretPosition)Устанавливает выделение.voidsetAnchor(int newAnchor)Устанавливает якорь.voidsetCaretPosition(int newCaretPosition)Устанавливает положение курсора.voidsetRange(int start, int end)Метод, устанавливающий значения начала и конца таким образом, чтобы они были валидны по отношению друг к другу.voidsetText(String value)Устанавливает текст для использования в этом изменении.StringtoString()
-
Подробное описание методов
-
getControl
public final Control getControl()
Получает элемент управления, связанный с этим изменением.- Возвращает:
- Элемент управления, связанный с этим изменением. Никогда не будет null.
-
getRangeStart
public final int getRangeStart()
Получает начальный индекс вTextInputControl.getText()для изменения. Будет всегда значением > 0 и ≤TextInputControl.getLength().- Возвращает:
- Начальный индекс
-
getRangeEnd
public final int getRangeEnd()
Получает конечный индекс вTextInputControl.getText()для изменения. Будет всегда значением >getRangeStart()и ≤TextInputControl.getLength().- Возвращает:
- Конечный индекс
-
setRange
public final void setRange(int start, int end)Метод, присваивающий значения начала и конца одновременно, гарантируя их корректность. Начало должно быть меньше или равно концу.- Параметры:
-
start- Новое начальное значение. Должно быть допустимым начальным значением -
end- Новое конечное значение. Должно быть допустимым конечным значением
-
getCaretPosition
public final int getCaretPosition()
Получает новое положение курсора. Это значение всегда будет > 0 и ≤getControlNewText().getLength()}- Возвращает:
- Новое положение курсора
-
getAnchor
public final int getAnchor()
Получает новое значение якоря. Это значение всегда будет > 0 и ≤getControlNewText().getLength()}- Возвращает:
- Новое положение якоря
-
getControlCaretPosition
public final int getControlCaretPosition()
Получает текущее положение курсора элемента управления.- Возвращает:
- Предыдущее положение курсора
-
getControlAnchor
public final int getControlAnchor()
Получает текущее положение якоря элемента управления.- Возвращает:
- Предыдущее значение якоря
-
selectRange
public final void selectRange(int newAnchor, int newCaretPosition)Устанавливает выделение. Значения положения якоря и курсора должны быть > 0 и ≤getControlNewText().getLength()}. Обратите внимание на зависимость от порядка: эти значения должны быть указаны после задания нового текста.- Параметры:
-
newAnchor- Новое положение якоря -
newCaretPosition- Новое положение курсора
-
getSelection
public final IndexRange getSelection()
Получает выделение этого изменения. Обратите внимание, что диапазон выделения относится кgetControlNewText(), а не к текущему тексту элемента управления.- Возвращает:
- Выделенный диапазон этого изменения.
-
setAnchor
public final void setAnchor(int newAnchor)
Устанавливает значение якоря. Значение якоря должно быть > 0 и ≤getControlNewText().getLength()}. Обратите внимание на зависимость от порядка: положение должно быть указано после задания нового текста.- Параметры:
-
newAnchor- Новое положение якоря
-
setCaretPosition
public final void setCaretPosition(int newCaretPosition)
Устанавливает положение курсора. Значение положения курсора должно быть > 0 и ≤getControlNewText().getLength()}. Обратите внимание на зависимость от порядка: положение должно быть указано после задания нового текста.- Параметры:
-
newCaretPosition- Новое положение курсора
-
getText
public final String getText()
Получает текст, используемый в этом изменении. Например, это может быть новый текст, добавляемый, или текст, заменяющий весь текст элемента управления в диапазоне от начала до конца. Обычно это пустая строка только для случаев, когда диапазон удаляется.- Возвращает:
- Текст, участвующий в этом изменении. Никогда не будет null.
-
setText
public final void setText(String value)
Устанавливает текст для использования в этом изменении. Используется для замены диапазона от начала до конца, если такой диапазон существует, или для вставки текста в позиции, представленной start == end.- Параметры:
-
value- Текст. Не может быть null.
-
getControlText
public final String getControlText()
Это весь текст, который у элемента управления есть до изменения. Чтобы получить текст после этого изменения, используйтеgetControlNewText().- Возвращает:
- предыдущий текст элемента управления
-
getControlNewText
public final String getControlNewText()
Получает весь новый текст, который будет использован в элементе управления после этого изменения. Обратите внимание, что некоторые элементы управления (такие как TextField) могут выполнить дополнительную фильтрацию после внесения изменений (например, удалить новые строки), поэтому нельзя предполагать, что newText будет точно таким же, как и окончательный контент элемента управления. Однако можно предположить, что это так для целей вычисления нового положения курсора и нового якоря (эти значения будут изменены по необходимости после того, как элемент управления удалит любые дополнительные символы, которые он может удалить).- Возвращает:
- Предлагаемый новый текст элемента управления на момент вызова, в соответствии с состоянием свойств start, end и text в этом объекте Change.
-
isAdded
public final boolean isAdded()
Получает, было ли это изменение в ответ на добавление текста. Обратите внимание, что после изменения объекта Change форматировщиком (с помощью одного из методов установки) возвращаемое значение этого метода не изменяется. Оно указывает, было ли это изменение вызвано добавлением текста, а не тем, будет ли текст в итоге добавлен.- Возвращает:
- true, если текст добавлялся
-
isDeleted
public final boolean isDeleted()
Получает, было ли это изменение в ответ на удаление текста. Обратите внимание, что после изменения объекта Change форматировщиком (с помощью одного из методов установки) возвращаемое значение этого метода не изменяется. Оно указывает, было ли это изменение вызвано удалением текста, а не тем, будет ли текст в итоге удален.- Возвращает:
- true, если текст удалялся
-
isReplaced
public final boolean isReplaced()
Получает, было ли это изменение в ответ на замену текста. Обратите внимание, что после изменения объекта Change форматировщиком (с помощью одного из методов установки) возвращаемое значение этого метода не изменяется. Оно указывает, было ли это изменение вызвано заменой текста, а не тем, будет ли текст в итоге заменён.- Возвращает:
- true, если текст заменялся
-
isContentChange
public final boolean isContentChange()
Изменение содержимого — это любое из изменений: добавление, удаление или замена. В основном это сокращение дляc.isAdded() || c.isDeleted();- Возвращает:
- true, если содержимое изменилось
-
clone
public TextFormatter.Change clone()
-
© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.