Olá pessoal,
Tenho uma classe que faz o Painel e nela te uma ação de Mouse que no método mouseClicked, cria um objeto da classe que é um OpenGL. Não consigo colocar de jeito nenhum a bendita janela do OpenGL no Painel.
Alguém me ajuda…
O erro:
Exception in thread “AWT-EventQueue-0” net.java.games.jogl.GLException: Unable to lock surface
at net.java.games.jogl.impl.windows.WindowsOnscreenGLContext.lockSurface(WindowsOnscreenGLContext.java:155)
at net.java.games.jogl.impl.windows.WindowsOnscreenGLContext.makeCurrent(WindowsOnscreenGLContext.java:107)
at net.java.games.jogl.impl.GLContext.invokeGL(GLContext.java:162)
at net.java.games.jogl.GLCanvas.reshape(GLCanvas.java:105)
at java.awt.Component.setBounds(Unknown Source)
at java.awt.Component.resize(Unknown Source)
at java.awt.Component.setSize(Unknown Source)
at GraficoBarra.<init>(GraficoBarra.java:31)
at Janela.criaGraficoBarra(Janela.java:102)
at Janela.mouseClicked(Janela.java:122)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
O código:
public void mouseClicked(MouseEvent me)
{
if ( me.getSource() == JLabel_1 )
{
this.criaGraficoLinha();
}
}
E a classe do OpenGL:
public class GraficoLinha implements GLEventListener
{
public GLCanvas canvas = null;
public GraficoLinha()
{
GLCapabilities capabilities = new GLCapabilities();
capabilities.setHardwareAccelerated(true);
capabilities.setDoubleBuffered(true);
canvas = GLDrawableFactory.getFactory().createGLCanvas(capabilities);
canvas.addGLEventListener(this);
canvas.setSize(400, 300);
canvas.setVisible(true);
}
public void init(GLDrawable glDrawable)
{
GL myGL = glDrawable.getGL();
myGL.glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
myGL.glShadeModel(GL.GL_FASTEST);
}
public void display(GLDrawable glDrawable)
{
GL myGL = glDrawable.getGL();
myGL.glClear(GL.GL_COLOR_BUFFER_BIT);
}
public void reshape(GLDrawable glDrawable, int arg1, int arg2, int arg3, int arg4)
{
GL myGL = glDrawable.getGL();
int width = canvas.getWidth();
int height = canvas.getHeight();
// Define a transformacao WINDOW x VIEWPORT
// Define a vizualização da VIEWPORT
myGL.glViewport(0,0,width,height);
myGL.glMatrixMode(GL.GL_PROJECTION);
myGL.glLoadIdentity();
// Define a visualização da WINDOW
myGL.glOrtho(0,width,0,height,-10,0);
}
public void displayChanged(GLDrawable glDrawable, boolean arg1, boolean arg2)
{
}
Alguém faz de um outro jeito me avisa por favor!
Abraçosss