【问题标题】:Canvas not displayable in LWJGL app画布无法在 LWJGL 应用程序中显示
【发布时间】:2014-09-14 05:24:00
【问题描述】:

在我的应用程序中,我有一个用作 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 中,并且 setVisible(true) 在添加之前也会在 JFrame 上调用(但是,在添加之前会生成此错误,因为它在构造函数中)。为什么会出现此错误?

【问题讨论】:

    标签: java swing opengl canvas lwjgl


    【解决方案1】:

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

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

    【讨论】:

    • 对不起,我还没有回答,直到现在我还没有时间做这个项目。无论如何,这解决了问题,它现在正在工作。我忘记了构造函数顺序等问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    相关资源
    最近更新 更多