(Или — это плохая практика, если есть какая-либо причина никогда не значения фильтра, заключенные в свойства Javafx?)
Пример 1: избегайте отрицательных значений в IntegerProperty
Пример 2: сохраняйте значение IntegerProperty в пределах списка
Первая идея: — переопределить IntegerPropertyBase.set(int). Это безопасно? На самом деле setValue(int) вызывает только set(int), но - если эта реализация когда-нибудь изменится - контроль над набором значений будет потерян.
Вторая идея: переопределить IntegerPropertyBase.invalidate(). Но на этом этапе значение уже было установлено.
Будет ли лучше, если свойства javafx выбрасывают исключение IllegalArgumentException (или ArrayIndexOutOfBoundsException, если завернутое значение — это индекс массива), или лучше отказаться от значения за пределами границ, вернув последнее значение в границах?
Может быть так:
Код: Выделить всё
class BoundedIntegerProperty extends IntegerPropertyBase {
(...)
int oldValue = defaultValueInBounds;
boolean settingOldValue = false;
public void invalidated() {
if(!settingOldValue){
if(outOfBounds(get())){
settingOldValue = true;
set(oldValue);
} else {
oldValue = get();
}
} else
settingOldValue = false;
}
}
Пропустил ли я что-нибудь в свойствах javafx, предусмотренных для фильтрации значений?
(Если необходимо, помогите мне улучшить, возможно, плохой английский текст этого текста. ...)
Подробнее здесь: https://stackoverflow.com/questions/175 ... x-property
Мобильная версия