在EclipseRCP插件视图中,条形图(jfreechart)显示为复合图上的小图标
在EclipseRCP插件中,条形图显示为视图组合上的小图标。该图表没有涵盖整个组合,这应该是实际情况。需要在代码中进行哪些附加设置才能在整个合成图上显示图形 以下是显示条形图的代码在EclipseRCP插件视图中,条形图(jfreechart)显示为复合图上的小图标,eclipse,jfreechart,rcp,bar-chart,Eclipse,Jfreechart,Rcp,Bar Chart,在EclipseRCP插件中,条形图显示为视图组合上的小图标。该图表没有涵盖整个组合,这应该是实际情况。需要在代码中进行哪些附加设置才能在整个合成图上显示图形 以下是显示条形图的代码 final CategoryDataset dataset = createDataset(); final JFreeChart chart = createChart(dataset); if(flag == false){ frame.dispose()
final CategoryDataset dataset = createDataset();
final JFreeChart chart = createChart(dataset);
if(flag == false){
frame.dispose();
}
frame = new ChartComposite(barchartComposite,SWT.NONE,chart,true);
frame.setLayoutData(new GridData(GridData.FILL_BOTH));
frame.setChart(chart);
frame.forceRedraw();
frame.pack();
frame.setVisible(true);
flag= false;
方法createDataset()
为条形图生成数据,方法createChart(dataset)
生成条形图
显示视图的完整源代码
}您必须修改名为
barchartComposite
的父组合
parent.setLayout(new GridLayout(1, false));
parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
final CategoryDataset dataset = createDataset();
final JFreeChart chart = createChart(dataset);
Composite barchartComposite = new Composite(parent, SWT.NONE);
barchartComposite.setLayout(new GridLayout(1, false));
barchartComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
ChartComposite frame = new ChartComposite(barchartComposite, SWT.BORDER,chart,true);
frame.setLayoutData(new GridData(GridData.FILL_BOTH));
您必须确保barchartcomposite
获取父组合的wohle空间。这可以通过和来实现
您可以在此处找到有关所有SWT布局的非常有用的教程:
parent.setLayout(…);parent.setLayoutData(…);
)下面是我运行上述代码1时的观察结果。条形图在视图中的条形图组合中显示为小图标。但是,一旦我们最小化和最大化EclipseRCP插件,条形图就会占据整个组合。问题是奇怪的行为。任何人都可以提供为什么图形显示为小图标的解决方案只有当显示条形图的代码在按钮处理程序中时,条形图才会显示为小图标。如果在创建组合后立即在按钮处理程序外使用相同的代码,则条形图将占据整个组合。我能知道这种奇怪行为的原因吗?
parent.setLayout(new GridLayout(1, false));
parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
final CategoryDataset dataset = createDataset();
final JFreeChart chart = createChart(dataset);
Composite barchartComposite = new Composite(parent, SWT.NONE);
barchartComposite.setLayout(new GridLayout(1, false));
barchartComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
ChartComposite frame = new ChartComposite(barchartComposite, SWT.BORDER,chart,true);
frame.setLayoutData(new GridData(GridData.FILL_BOTH));