【问题标题】:Drawing a graph with Swing: general approach使用 Swing 绘制图形:一般方法
【发布时间】:2011-09-03 11:18:55
【问题描述】:

假设我有一个由节点和边组成的图,我想在 Swing 应用程序中绘制它。 我不是 Swing 程序员,但据我所知,我看到了两种方法:

  1. 将整个图形绘制为一个组件
  2. 将每个节点和边绘制为单个组件

我已经看到一个应用程序在做第一个。要拖动绘制为圆形的节点,应用程序会检查离单击点最近的节点是什么。在我看来,这效率不高。 第二种方法可行吗?应该遵循哪一个,为什么?

【问题讨论】:

  • 有一些免费的图表(谷歌),并且在这个论坛上得到了很好的回应(例如 JFreeGraphs),非免费有可变的 Docs&Supports&Forum 关于 onwers 网站的问答...
  • 为什么要重新发明轮子?除了已经推荐的 JGraph,还有我最喜欢的 JUNG 框架
  • 我正在用 Javascript 编写一个简单的库,我正在寻找可以“启发”我的库

标签: java swing graph drawing


【解决方案1】:

我们编写和维护JGraph,经过 10 年的努力,我们仍然拥有一个共享的享元渲染器来绘制所有单元格。原因是每个单元的组件的内存成本。缺点是需要自己处理刷新和事件处理,不过还不错。

我们已经讨论过很多次了,总是一样的结论。

【讨论】:

    【解决方案2】:

    这两种方法都是可行的,具体取决于要求。 GraphPanel 是单个组件的简单示例,而 JGraph 是一个更灵活的库,它使用 flyweight pattern 进行高效渲染。

    【讨论】:

    • 我快速浏览了JGraph的源代码,在我看来它使用了first的方法,至于“组件”我的意思是“一个Swing组件" 如果我​​是对的,JGraph 有一个组件,它绘制包含节点和边的单元格
    • 我明白你的意思;我试图澄清措辞。享元模式也出现在JTable 渲染器和编辑器中。
    猜你喜欢
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 2020-11-01
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多