Перезаписать производный столбец в предварительном предохранителе

В графе prefuse у меня есть производный столбец с именем "distance", созданный с помощью _ 2_ и логическая переменная времени выполнения с именем normalize. Теперь я хочу изменить выражение, используемое для вычисления значения столбца во время выполнения, в зависимости от значения normalize, но таких вещей, как replaceColumn() или deleteColumn(), не существует. Когда я пытаюсь перезаписать старый столбец, снова вызывая addColumn(), я получаю сообщение «В таблице уже есть столбец с именем« distance »».

Могу ли я как-то программно изменить выражение, используемое для вычисления значения столбца distance, или сделать его зависимым от переменной времени выполнения normalize? Я бы предпочел не иметь двух столбцов с разными именами, потому что значение используется из многих мест в проекте, и поэтому мне пришлось бы реализовать множество различий в регистре.


person jederik    schedule 09.05.2014    source источник


Ответы (1)


prefuse имеет IfExpression, поэтому вы можете сделать производный столбец зависимым от normalize.

В качестве альтернативы есть метод removeColumn(String) в Table.

person alex.rind    schedule 11.05.2014
comment
Хорошо, теперь я создал IfExpression, передавая AbstractPredicate с getBoolean(), перезаписанным, чтобы вернуть normalize, но кажется, что производные значения столбца вычисляются при вызове addColumn(col, expr), а не при вызове методов Tuple.get...(). Таким образом, возвращаемые значения IfExpression chnage при изменении normalize, но значения, возвращаемые Tuple.get...(), - нет. - person jederik; 13.05.2014
comment
Кроме того, я попробовал Table.removeColumn(), но здесь произошел сбой prefuse, передавая TableEvent каскадной визуальной таблице. - person jederik; 13.05.2014