0

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

请问有人有解决方案吗?

4

1 回答 1

0

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

关于树和图表之间的行高问题。通过在 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 侦听器以在调整查看器大小时对齐树/图表。

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

于 2016-02-24T21:58:50.173 回答