【问题标题】:Trying to mix Swing and LWJGL尝试混合 Swing 和 LWJGL
【发布时间】:2014-11-08 13:28:32
【问题描述】:

我现在正在尝试混合使用 LWJGL 和 Swing,这样我就可以拥有 Swing 的 GUI 和 LWJGLS 图形...但它不起作用,提前谢谢。

代码:

/**
 * 
 */
public static TSudioQE TSudio;
private static final long serialVersionUID = -8495077485468477943L;

public static void main(String[] args) {
    try {
        TSudioQE tsudio = new TSudioQE();
    } catch (LWJGLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public TSudioQE() throws LWJGLException {
    setTitle("TSudio Quall Engine 1X");
    JPanel p = new JPanel();

    Canvas c = new Canvas();

    Display.create();
    Display.setParent(c);

    GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);

    // set the color of the quad (R,G,B,A)
    GL11.glColor3f(0.5f, 0.5f, 1.0f);

    // draw quad
    GL11.glBegin(GL11.GL_QUADS);
    GL11.glVertex2f(100, 100);
    GL11.glVertex2f(100 + 200, 100);
    GL11.glVertex2f(100 + 200, 100 + 200);
    GL11.glVertex2f(100, 100 + 200);
    GL11.glEnd();
    add(p);
    setSize(800, 460);
    setExtendedState(JFrame.MAXIMIZED_BOTH);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

@Override
public void windowOpened(WindowEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void windowClosing(WindowEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void windowClosed(WindowEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void windowIconified(WindowEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void windowDeiconified(WindowEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void windowActivated(WindowEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void windowDeactivated(WindowEvent e) {
    // TODO Auto-generated method stub

}

我收到以下错误:

 org.lwjgl.LWJGLException: Parent.isDisplayable() must be true
at org.lwjgl.opengl.Display.createWindow(Display.java:301)
at org.lwjgl.opengl.Display.setParent(Display.java:451)
at qq.application.TSudioQE.<init>(TSudioQE.java:47)
at qq.application.TSudioQE.main(TSudioQE.java:33)

谁知道如何解决它?应该不错吧。

祝你有美好的一天:-)

【问题讨论】:

标签: java swing lwjgl


【解决方案1】:

您为 Display 设置为父级的 Canvas 必须是可见的:

JFrame frame = new JFrame();
Canvas canvas = new Canvas();
frame.add(canvas);
frame.setVisible(true);
try 
{
    Display.setParent(canvas);
    Display.create();
} 
catch (LWJGLException e) 
{
    e.printStackTrace();
}

【讨论】:

    猜你喜欢
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 2012-04-13
    • 1970-01-01
    • 2021-09-05
    • 2010-11-23
    相关资源
    最近更新 更多