【问题标题】:SWT Nebula gantt chart componentSWT星云甘特图组件
【发布时间】:2016-02-25 05:58:50
【问题描述】:

我正在尝试将 Nebulla Ganchart 组件用于项目。我们需要一个标准的项目管理视图,在甘特图旁边有一个表格。不幸的是,对齐网格和甘特图组件的行并不容易。 有一个示例,它尝试使用树组件来执行此操作。但这并不精确。图表和树的行高略有不同,此外,滚动会完全搞砸。

请问有人有解决办法吗?

【问题讨论】:

    标签: java swt nebula


    【解决方案1】:

    这可能来得有点晚,但这里有一些基于我使用 Nebula 甘特图的经验的提示。

    关于树和图表之间的行高问题。可以通过在 GanttChart 构造函数中传入您自己的类来使用自定义设置创建甘特图。 Nebula 建议在创建此类时扩展 nebula.widgets.ganttchart.AbstractSettings。您可能想要查看和/或覆盖的一些方法:

    AbstractSettings.getEventsTopSpacer()
    AbstractSettings.getEventsBottomSpacer()
    AbstractSettings.getSectionBarDividerHeight()
    AbstractSettings.getSectionBarWidth()
    

    您可能还想查看 AbstractSettings.lockHeaderOnVerticalScroll() - 我需要锁定标题栏,然后在表格上方添加填充以正确对齐。

    关于在滚动期间链接树/图表。 可以将 SWT.Selection 侦听器添加到树上的垂直条。然后,当树滚动时,您可以强制甘特图也滚动。对我来说,这看起来像:

    treeViewer.getTree().getVerticalBar().addListener(SWT.Selection, new Listener(){
        @Override
        public void handleEvent(Event event){
            TreeItem ti = treeViewer.getTree.getTopItem();
            ganttChart.getGanttComposite().setTopItem((GanttEvent) ti.getData(), 6, SWT.LEFT);
        }
    });
    

    请注意,反之则效果不佳;如果您尝试将甘特图的滚动操作链接到树,则响应不会那么敏捷。这是由于甘特图如何平滑滚动,而不是像树一样逐个元素滚动。我通过禁用甘特图上的滚动条绕过了这个问题,但这是一个不太理想的修复。

    除此之外,我还必须添加一个 SWT.Resize 侦听器,以便在调整查看器大小时对齐树/图表。

    希望这可以为您指明正确的方向!祝你好运。

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 2015-11-22
      • 2020-05-07
      相关资源
      最近更新 更多