【问题标题】:Overwrite derived column in prefuse覆盖 prefuse 中的派生列
【发布时间】:2014-05-09 11:23:30
【问题描述】:

在 prefuse 图中,我有一个名为 "distance" 的派生列,它是用 Table.addColumn(String name, Expression expr) 创建的,以及一个名为 normalize 的布尔运行时变量。现在我想根据normalize的值更改运行时用于计算列值的表达式,但是没有replaceColumn()deleteColumn()这样的东西。当我尝试通过再次调用 addColumn() 来覆盖旧列时,我得到一个“表已经有名为“距离”的列”。

我能否以某种方式以编程方式更改用于计算distance 的列值的表达式,或者使其依赖于运行时变量normalize?我宁愿没有两个名称不同的列,因为项目中的许多地方都使用了该值,因此我必须实现很多大小写区分。

【问题讨论】:

    标签: java prefuse


    【解决方案1】:

    prefuse 有一个IfExpression,因此您可以使派生列依赖于normalize

    另外,Table 中有一个方法 removeColumn(String)

    【讨论】:

    • 好的,现在我创建了一个IfExpression 传递一个AbstractPredicate 并覆盖getBoolean() 以返回normalize,但似乎派生列值是在调用addColumn(col, expr) 时计算的,而不是调用 Tuple.get...() 方法时。所以IfExpression chnage 的返回值,当更改normalizeTuple.get...() 返回的值不会。
    • 此外,我尝试了 Table.removeColumn(),但这里 prefuse 将 TableEvent 传递给级联可视表时崩溃了。
    猜你喜欢
    • 1970-01-01
    • 2010-10-20
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多