У меня есть текстовое поле, которое я хочу ограничить только целыми числами.См. Приведенный ниже код.
Когда начинается представление, содержащее поле, и если модель построена с начальным значением по умолчанию для someInteger
, представление отображает число правильно, без дополнительного форматирования.Он также фильтрует новый типизированный ввод как ожидалось.
Возникает проблема, когда рефакторинг модели не имеет значения по умолчанию.Будучи целочисленным свойством, по умолчанию оно равно 0. Когда я позже назначу этому свойству новое значение, переданный controlNewText
содержит знаки препинания, такие как 1,234
.Это приводит к сбою проверки и отфильтрованию вновь назначенного значения из представления.
Почему форматирование controlNewText
сначала форматируется?Есть ли способ предотвратить это?
textfield(model.someInteger) {
required()
textFormatter = TextFormatter(IntegerStringConverter(), model.item.someInteger)
stripNonInteger()
filterInput { it.controlNewText.isInt() }
}
class SomeData {
val someIntegerProperty = SimpleIntegerProperty(this, "someInteger")
var someInteger by someIntegerProperty
}
class SomeDataModel : ItemViewModel<SomeData>(SomeData()) {
val someInteger = bind(SomeData::someIntegerProperty)
}