我正在尝试使用一个项目的星云甘特图组件。我们需要一个标准的项目管理,如视图,与甘特图旁边的表格。不幸的是,对齐网格和甘特图组件的行一点都不容易。这里有一个示例,它尝试使用一个树组件来实现这一点。但它并不精确。图表和树的行高略有不同,此外,滚动会把事情搞得一团糟。
有谁有解决这个问题的办法吗?
发布于 2016-02-25 05:58:50
这可能来得有点晚,但这里有一些基于我使用星云甘特图的经验的提示。
有关树和图表之间的行高问题的。通过在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侦听器来对齐树/图表。
希望这能将你引向正确的方向!祝好运。
https://stackoverflow.com/questions/29150578
复制相似问题