添加小部件后重绘Eclipse RCP编辑器

时间:2017-07-04 13:50:42

标签: java eclipse eclipse-plugin eclipse-rcp rcp

在我的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);

}

这是我按下"添加图表"后得到的: enter image description here

这就是我所期待的以及我在手动编辑器上进行任何更改后得到的结果: enter image description here

0 个答案:

没有答案