使用SVG + Java进行灵活的信息显示,这是否可行?

时间:2010-10-01 13:20:28

标签: java svg

我需要创建复杂电气系统的“模拟”显示。我可以访问Visio中的实时状态信息和系统框图。

这是一种可行的方法吗?

  1. 从系统框图

  2. 创建SVG图纸
  3. 使用SVG属性标记感兴趣的SVG元素

  4. 将SVG DOM加载到java

  5. 找到已标记的元素并根据系统状态信息对其进行修改(例如,如果“处于警报状态”,则将元素设为RED)

  6. 使用BATIK将SVG渲染为PNG以显示(使用swing组件:JSVGCanvas)

  7. 关键要求是在部署应用程序后修改SVG的灵活性。该应用程序能够根据SVG中的标签灵活地提取不同的“数据点”。

    任何人都有使用类似策略的成功吗? 我应该期待什么陷阱? 什么是SVG编辑工具的方式?

2 个答案:

答案 0 :(得分:2)

我为健康状况显示做了类似的事情。我实际上注释了数据对象,并让他们将状态推入一个愚蠢的SVG文件,但机器应该大致相同,只是反过来。

优点:

  • 使复杂,动态的图表变得非常容易呈现。
  • 与我曾经使用的其他所有东西相比,图表维护是轻而易举的。
  • 能够直接通过SVG或通过服务器呈现的图像间接定位Web应用程序。

缺陷:

  • 根据您希望可视化的复杂程度,数据绑定可能很痛苦。如果你想注释SVG将数据拉入自身,这可能最终成为困难的部分。
  • 你需要很好地掌握XPath才能做任何有点棘手的事情。调试XPath表达式并不困难,但通常很乏味。

编者: Inkscape。还有一些其他矢量图形编辑器可以直接或作为导出目标执行SVG,但我见过的所有编辑器都没有接近Inkscape。它不支持当前SVG规范中的每个功能,但听起来它对于大多数(如果不是全部)你想要的就足够了。当你需要它不支持的东西时,不要对SVG文件进行手工编辑也是相当不错的。

答案 1 :(得分:0)

你应该看看SVG Salamander,我自己没有用过它,但有些功能是:

  • “可以轻松访问SVG图表中所有命名形状的索引。”
  • “直接访问场景图树。您可以使用Java命令直接操作它。”