画布在LWJGL应用程序中无法显示

时间:2014-09-14 05:24:00

标签: java swing opengl canvas lwjgl

在我的应用程序中,我有一个类作为Swing组件来使用LWJGL渲染3D窗口。当我开始运行该应用时,我收到来自Display.create() Parent.isDisplayable() must be true的错误。我试过看了,大多数人都说这是在调用setVisible()之前调用Display.create()时发生的。但是,这不是这种情况,我似乎无法弄清楚为什么我会收到错误。

我的控件如下:

public class WorldCanvas extends JPanel {
    private final Canvas canvas = new Canvas();

    public WorldCanvas() {
        ...
        add(canvas, BorderLayout.CENTER);

        try {
            Display.setParent(canvas);

            setVisible(true);
            canvas.setVisible(true);
            Display.create();
        } catch (LWJGLException e) {
            e.printStackTrace();
            return;
        }
    }
}

它被直接添加到JFrame中,并且在添加它之前也会在JFrame上调用setVisible(true)(但是这个错误在它甚至可以被添加之前生成,因为它在构造函数中)。为什么我会收到此错误?

1 个答案:

答案 0 :(得分:1)

您正在尝试在包含Canvas的JPanel的构造函数中创建显示。
因此Canvas不可显示,因为它的父类WorldCanvas不可显示,因为它即将被创建。

您必须将初始化移动到构造函数之后调用的方法中。