2014-11-08 79 views
0

我现在正在尝试混合LWJGL和Swing,所以我可以使用Swing的GUI和LWJGLS图形...但它不起作用,请提前致谢。试图混合Swing和LWJGL

代码:

/** 
* 
*/ 
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) 

任何人谁知道如何解决它?这可能很好。

有一个伟大的日子:-)

+0

这是47行? 1)为了更快地获得更好的帮助,请发布[MCVE](http://stackoverflow.com/help/mcve)(最小完整可验证示例)。 2)请参阅[什么是堆栈跟踪,以及如何使用它来调试我的应用程序错误?](http://stackoverflow.com/q/3988788/418556) – 2014-11-08 13:48:19

回答

1

设置父为您展示的画布必须是可见:

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(); 
} 
+0

谢谢:-)它帮助我:-) – ZinXanCraft 2014-11-11 06:29:39