Clojure / Clojurescript中的GUI编程 - 'zoomable directed acyclic graphs'

时间:2016-06-23 11:05:08

标签: javascript java user-interface graph clojure

我正在设计一个GUI,并希望在JVM上找到一个库,或者想要在Clojure或Clojurescript中使用javascript

问题:

我需要显示'zoomable'有向无环图(DAG)。一张图片的价值是1000字,所以界面应该是什么样的,以及屏幕在“缩放”下如何变化:

具体来说,每个节点都可以拥有自己的内部图形,并限制每个内部图形与节点本身具有相同数量的输入和输出。

我的图形体验在Javascript中有限,在Java中不存在,但是......

我的想法:

  1. 天真地在节点内部绘制所有“内部图形”的整个图形,并在缩放级别足够远时将内部图形淡出文本。使用单击事件可以更改此级别的缩放比例。当有几个嵌套的内部图表时,我不认为这会表现得很好。

  2. 绘制未显示的图形并在单击时放大到一个节点,使其背景填满屏幕,然后覆盖内部图形。对于嵌套的内部图形,执行相同的技巧,维护“背景节点”和“内部图形”。

  3. 选项2是否明智?如果是这样有一个库(即graphviz)我可以修改以实现这种行为?如果没有库,我应该使用什么框架(即JavaFX)?

1 个答案:

答案 0 :(得分:0)

如果您不关心使用Java互操作语法,我强烈建议FXDiagram

  

所选功能:

     
      
  • 现代图形[基于JavaFX]
  •   
  • 暗示性隐喻
  •   
  • 针对可用性进行了优化
  •   
  • 多点触控手势
  •   
  • 平滑过渡/动画
  •   
  • 动画自动布局(基于KIELERGraphviz
  •   
  • 动画撤消/重做
  •   
  • JSON持久性
  •   
  • SVG导出
  •   
  • Xtext / Eclipse集成
  •   
  • 图形上下文菜单
  •   
  • ......还有更多
  •   

它的开源(和活动),用Xtend编写,可以轻松集成基于Xtext的DSL中表达的模型。