Java JOGL在用户调整窗口大小后查找当前屏幕大小

Java JOGL在用户调整窗口大小后查找当前屏幕大小,java,opengl,graphics,jogl,Java,Opengl,Graphics,Jogl,如何在JOGL实例中查找当前窗口大小。用户会手动对窗口执行此操作,这是我到目前为止所做的,但是这只会一直返回1920 x 1080。但是,我希望它返回当前窗口的宽度和高度 @Override public void display(GLAutoDrawable glautodrawable) { GL gl = glautodrawable.getGL(); int newWidth = glautodrawable.getWidth(); int newHeight

如何在JOGL实例中查找当前窗口大小。用户会手动对窗口执行此操作,这是我到目前为止所做的,但是这只会一直返回1920 x 1080。但是,我希望它返回当前窗口的宽度和高度

@Override
public void display(GLAutoDrawable glautodrawable) {

    GL gl = glautodrawable.getGL();
    int newWidth = glautodrawable.getWidth();
    int newHeight = glautodrawable.getHeight();
    System.out.println(newWidth + "   " + newHeight);
    try {
        render(gl, newWidth, newHeight);
    } catch (IOException ex) {
        Logger.getLogger(dataModelGLEventListener.class
                .getName()).log(Level.SEVERE, null, ex);
    }
}
另外,显示方法对窗口大小的响应非常晚,这是更好的方法吗

更新:我通过获取放置在其中的JFrame的大小,然后适当地重置画布大小来完成此操作

更新代码:

@Override
public void display(GLAutoDrawable glautodrawable) {

    GL gl = glautodrawable.getGL();

    GLU glu = new GLU();
    float widthHeightRatio = width / height - 2.75f;
    Rectangle r = dataModelJOGLFrame.instance.getBounds();
    int h = r.height;
    int w = r.width;
    dataModelJOGLFrame.glcanvas.setSize(w, h);
    System.out.println(h + "   " + w);
    flag = 1;

    try {
        render(gl, newWidth, newHeight);
    } catch (IOException ex) {
        Logger.getLogger(dataModelGLEventListener.class
                .getName()).log(Level.SEVERE, null, ex);
    }
    dataModelJOGLFrame.menu.validate();
    dataModelJOGLFrame.menu.repaint();
}

但是,这会导致菜单栏项在画布后面呈现,并且重新绘制和验证似乎对此没有影响,如何解决此问题?

您使用的是什么操作系统?你能给我们提供更多的上下文以便我们能更好地帮助你吗?我正在使用Ubuntu,但是这也需要在WIndows和OS X上工作。实际上,GLCanvas是一个GLAutoDrawable,你可以通过调用getParent()来获取这个画布的容器。GLU对象应该在GLEventListener.init(GLAutoDrawable)中通过调用createGLU(GL)创建。您应该阅读以下内容:您正在使用什么操作系统?你能给我们提供更多的上下文以便我们能更好地帮助你吗?我正在使用Ubuntu,但是这也需要在WIndows和OS X上工作。实际上,GLCanvas是一个GLAutoDrawable,你可以通过调用getParent()来获取这个画布的容器。GLU对象应该在GLEventListener.init(GLAutoDrawable)中通过调用createGLU(GL)创建。您应该阅读以下内容: