Java swing JPanel示例,GLCanvas错误

Java swing JPanel示例,GLCanvas错误,swing,opengl,jpanel,jogl,glcanvas,Swing,Opengl,Jpanel,Jogl,Glcanvas,} 在上面的activator类中,我将(JPanel)graphpanel添加到(JPannel)testFrame.getPanel1()中,然后使用testFrame类中的按钮,我使用了removeAll()方法并再次添加静态graphpanel,但我得到了下面的错误 当我调试它时,我看到GLcanvas松开了对等对象。我找不到解决办法 线程“thread-3”java.lang.RuntimeException中的异常: javax.media.opengl.GLException:无法

}

在上面的activator类中,我将(JPanel)graphpanel添加到(JPannel)testFrame.getPanel1()中,然后使用testFrame类中的按钮,我使用了removeAll()方法并再次添加静态graphpanel,但我得到了下面的错误

当我调试它时,我看到GLcanvas松开了对等对象。我找不到解决办法

线程“thread-3”java.lang.RuntimeException中的异常: javax.media.opengl.GLException:无法创建临时opengl上下文 对于位于的设备上下文0xFFFFFFDE01148B jogamp.common.awt.AWTEDTExecutor.invoke(AWTEDTExecutor.java:58)位于 jogamp.opengl.awt.AWTThreadingPlugin.invokeoOpenGLThread(AWTThreadingPlugin.java:103) 在 jogamp.opengl.ThreadingImpl.invokeoOpenGLThread(ThreadingImpl.java:205) 在 javax.media.opengl.Threading.invokeoOpenGLThread(Threading.java:172) 位于javax.media.opengl.Threading.invoke(Threading.java:191) javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:449)位于 grafik.view.grafik.Gcontroller.draw(Gcontroller.java:169)位于 grafik.model.data.Dcontroller.drawAll(Dcontroller.java:272)位于 grafik.view.Wcontroller.GdataClean(Wcontroller.java:261)位于 grafik.view.WThread.run(WThread.java:57)由以下原因引起: javax.media.opengl.GLException:无法创建临时opengl上下文 对于位于的设备上下文0xFFFFFFDE01148B jogamp.opengl.windows.wgl.WindowsWGLContext.createImpl(WindowsWGLContext.java:306) 在 jogamp.opengl.GLContextImpl.makeCurrentWithinLock(GLContextImpl.java:572) 在jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:485) 在 jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:645) 在jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:594) 位于javax.media.opengl.awt.GLCanvas$8.run(GLCanvas.java:996) java.awt.event.InvocationEvent.dispatch(未知源)位于 位于的java.awt.EventQueue.dispatchEventImpl(未知源) java.awt.EventQueue.access$300(未知源代码) java.awt.EventQueue$3.run(未知源代码)位于 java.awt.EventQueue$3.run(未知源代码)位于 java.security.AccessController.doPrivileged(本机方法)位于 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源代码)位于java.awt.EventQueue.dispatchEvent(未知源代码)位于 java.awt.EventDispatchThread.pumpOneEventForFilters(未知源) 位于java.awt.EventDispatchThread.pumpEventsForFilter(未知源) 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(未知 源代码)位于java.awt.EventDispatchThread.pumpEvents(未知源代码) 位于java.awt.EventDispatchThread.pumpEvents(未知源) java.awt.EventDispatchThread.run(未知源)


请切换到JOGL 2.3.1。然后,将“javax.media”替换为“com.jogamp”,以避免任何编译错误

当您从其父容器中删除AWT GLCanvas时,它将丢失其对等对象,其OpenGL上下文将被破坏。这是使用这种画布时无法避免的。如果这不是所需的行为,请切换到NEWT

在某些硬件上的某些特定情况下,创建另一个上下文可能会失败。如果使用最新版本的JOGL仍然获得相同的堆栈跟踪,请填写错误报告:

public class Activator implements BundleActivator {

TestFrame testFrame = new TestFrame();

public static JPanel graphPanel;

public void start(BundleContext context) throws Exception {


        graphPanel = cartesianGraphs.getGraphPanel();


        testFrame.getPanel1().add(graphPanel);

        testFrame.setVisible(true);
    } 
}



public class TestFrame extends JFrame {

private static final long serialVersionUID = 1L;

private library kutuphane = null;

private JPanel contentPane;
private JTabbedPane tabbedPane;
private JPanel panel1;
private JButton btn;


public TestFrame() {
    initComponents();
}

private void initComponents() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 800, 600);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);
    contentPane.add(getTabbedPane(), BorderLayout.CENTER);
    contentPane.add(getBtn(), BorderLayout.NORTH);
}



public JPanel getPanel1() {
    if (panel1 == null) {
        panel1 = new JPanel();
        panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS));
    }
    return panel1;
}

private JButton getBtn() {
    if (btn == null) {
        btn = new JButton("Remove All and Add");
        btnTabSil.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {


                TestFrame.this.getPanel1().removeAll();
                Activator.graphPanel.revalidate();

                 // where it throws the exception is below
                TestFrame.this.getPanel1().add(Activator.graphPanel);
                TestFrame.this.revalidate();
                TestFrame.this.repaint();
                TestFrame.this.setVisible(true);
            }
        });
    }
    return btn;
}