Класс TextFormatter.Change
- javafx.scene.control.TextFormatter.Change
Все реализованные интерфейсы:
Вложенный класс:
public static final class TextFormatter.Change extends Object implements Cloneable
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 изменяемый, но не наблюдаемый. Он должен использоваться только в течение одного изменения. Предполагается, что изменение будет изменено внутри форматировщика.
С:
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- Новое значение начала. Должно быть корректным начальным значением
-
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- Новая позиция якоря
-
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, если содержимое изменилось
-
toString
public String toString()
-
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.