使用GLCanvas的SWT应用程序未正确调整大小

时间:2016-08-05 16:54:44

标签: java resize swt glcanvas

我正在创建一个类似绘图程序的应用程序,为此我尝试在shell中使用带有GLCanvas小部件的SWT。这是它的一个片段,显示了我遇到的问题:

    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 个答案:

没有答案