SWT-приложение с GLCanvas неправильно изменяет размер

Я делаю приложение, которое является своего рода программой для рисования, и с этой целью я пытаюсь использовать SWT с виджетом GLCanvas в оболочке. Это фрагмент, который показывает проблему, с которой я столкнулся:

    shell = new Shell();

    GridLayout gridLayout = new GridLayout();
    gridLayout.numColumns = 2;

    shell.setLayout(gridLayout);
    shell.setSize(1000, 800);
    shell.setText(APPLICATION_NAME);

    Label label = new Label(shell, SWT.NONE);
    label.setText("Test");

    Composite composite = new Composite(shell, SWT.NONE);
    GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
    composite.setLayoutData(gridData);
    composite.setLayout(new FillLayout(SWT.HORIZONTAL));

    GLData data = new GLData();
    data.doubleBuffer = true;

    canvas = new GLCanvas(composite, SWT.NO_BACKGROUND, data);

Когда я изменяю размер окна из этого кода, оно не отображается должным образом. GLCanvas мерцает, но на чертеже также есть шаг, на котором он рисует GLCanvas на экране до его изменения, чтобы правильно заполнить оставшееся пустое пространство. Это имеет эффект, когда, например, при изменении размера окна влево, GLCanvas меньше, чем должно быть. И наоборот, при изменении размера окна вправо, GLCanvas больше, чем должен быть, и расширяется в правую часть окна.

Я попытался установить стиль холста с SWT.NONE на SWT.NO_BACKGROUND, на SWT.DOUBLE_BUFFERED на SWT.NO_REDRAW_RESIZE, и это никак не повлияло на эту проблему.

Как можно исправить это поведение?

0 ответов

Другие вопросы по тегам