Редактор Rcl Редактор Eclipse после добавления виджета

70
8

В моем редакторе плагинов Eclipse есть кнопка "Добавить график", которая добавляет композит с графиком в другой уже созданный композит с "Grid Layout", но созданный композит не появляется до изменения размера редактора вручную или переключения на другой редактор и вернитесь

я также использовал

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

спросил(а) 2017-07-04T16:50:00+03:00 3 года, 2 месяца назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема