SWT星云甘特图组件

时间:2015-03-19 16:56:40

标签: java swt nebula

我正在尝试将Nebulla Gantchart组件用于项目。我们需要像视图这样的标准项目管理,在甘特图旁边有一个表格。遗憾的是,根本不需要对齐网格和甘特图组件的行。 有一个示例,它尝试使用树组件执行此操作。但这不准确。图表和树之间的行高有点不同,旁边,完全滚动混乱。

有人有解决方案吗?

1 个答案:

答案 0 :(得分:0)

这可能会有点晚,但根据我使用星云的甘特图的经验,这里有一些提示。

关于树和图表之间的行高问题。可以通过在GanttChart构造函数中传入您自己的类来使用自定义设置创建甘特图。星云建议在创建此类时扩展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);
    }
});

请注意,相反,这种方法效果不佳;如果您尝试将甘特图的滚动操作链接到树,则响应将不会像snappy那样。这是由于甘特图如何平滑地滚动,而不是像树一样逐个元素滚动。我通过禁用Gantt上的滚动条来规避这个问题,但这是一个不太理想的修复。

除此之外,每当调整大小时,我都必须添加一个SWT.Resize侦听器来对齐树/图表。

希望这是指向正确的方向!祝你好运。