Ограничить, какие значения будут подлежать урегулированию в свойстве javafx? ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Ограничить, какие значения будут подлежать урегулированию в свойстве javafx?

Сообщение Anonymous »

Каков наилучший способ сохранить значение свойства javafx в определенных пределах?

(Или — это плохая практика, если есть какая-либо причина никогда не значения фильтра, заключенные в свойства 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

Вернуться в «JAVA»