在我的Eclipse插件编辑器中有一个名为" Add Graph"的按钮。使用"网格布局"在另一个已经创建的合成中添加带有图形的合成,但是在手动调整编辑器大小或切换到另一个编辑器并返回之前,创建的合成不会出现
我也用过
parentComposite.pack();
parentComposite.layout();
但添加的复合材料显示的尺寸较小,并且在手动调整编辑器大小或切换到另一个编辑器并返回之后也会调整。
所以我的问题是如何调用在手动调整编辑器大小或切换到另一个编辑器并返回时运行的相同处理程序。在添加新合成后调整我的视图。
添加示例:
public class MyEditor extends EditorPart {
private Composite compGraphesArea;
@Override
public void createPartControl(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new GridLayout(2, false));
Button btnAddGraph = new Button(container, SWT.NONE);
btnAddGraph.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
createGraph(compGraphesArea);
}
});
btnAddGraph.setText("Add Graph");
compGraphesArea = new Composite(container, SWT.NONE);
compGraphesArea.setLayout(new GridLayout(1, true));
compGraphesArea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
createGraph(compGraphesArea);
}
private void createGraph(Composite compGraphArea) {
JFreeChart chart = chartHandler.getChart();
compGraphPlot = new Composite(compGraphArea, SWT.BORDER | SWT.EMBEDDED);
compGraphPlot.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
Frame chartFrame = SWT_AWT.new_Frame(compGraphPlot);
ChartPanel label = new ChartPanel(chart);
chartFrame.add(label);
chartFrame.pack();
chartFrame.setVisible(true);
XYPlot plot = chart.getXYPlot();
ValueAxis axis = plot.getDomainAxis();
axis.setFixedAutoRange(1000000 + slider.getMaximum() / 2);
}