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;
}}
在上面的激活器类中,我将(JPanel )__图形面板添加到(JPannel) JPannel中,然后使用testFrame类中的一个按钮,使用removeAll()方法并再次添加静态graphPannel,但我得到了下面的错误。
当我调试它时,我看到GLcanvas松开了对等__。我找不到解决办法。
线程"Thread-3“中的异常: jogamp.common.awt.AWTEDTExecutor.invoke(AWTEDTExecutor.java:58) at jogamp.opengl.awt.AWTThreadingPlugin.invokeOnOpenGLThread(AWTThreadingPlugin.java:103) at jogamp.opengl.ThreadingImpl.invokeOnOpenGLThread(ThreadingImpl.java:205) at javax.media.opengl.Threading.invokeOnOpenGLThread(Threading.java:172) at javax.media.opengl无法为设备上下文0 xffffffde01148 b创建临时OpenGL上下文。javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:449) at grafik.view.grafik.Gcontroller.draw(Gcontroller.java:169) at grafik.model.data.Dcontroller.drawAll(Dcontroller.java:272) at grafik.view.Wcontroller.GdataClean(Wcontroller.java:261) at grafik.view.WThread.run(WThread.java:57)的Threading.invoke(Threading.java:191)由: javax.media.opengl.GLException:无法创建设备上下文的临时上下文0xffffffde01148b在jogamp.opengl.windows.wgl.WindowsWGLContext.createImpl(WindowsWGLContext.java:306) at jogamp.opengl.GLContextImpl.makeCurrentWithinLock(GLContextImpl.java:572) at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:485) at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:645) at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:594) at javax.media.opengl.awt.GLCanvas$8.run(GLCanvas.java:996)在java.awt.event.InvocationEvent.dispatch(Unknown来源)在java.awt.EventQueue.dispatchEventImpl(未知来源)在java.awt.EventQueue.access$300(未知来源)在java.awt.EventQueue$3.运行(未知来源)在java.awt.EventQueue$3.运行(未知来源)在java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown来源)在java.awt.EventQueue.dispatchEvent(未知来源))在java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown来源)在java.awt.EventDispatchThread.pumpEventsForFilter(Unknown来源)在java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown来源)在java.awt.EventDispatchThread.pumpEvents(Unknown来源)在java.awt.EventDispatchThread.pumpEvents(Unknown来源)在java.awt.EventDispatchThread.run(未知来源)
发布于 2015-04-14 10:12:30
请切换到JOGL 2.3.1。然后,将"javax.media“改为"com.jogamp”,以避免任何编译错误。
当您从其父容器中删除AWT GLCanvas时,它就失去了它的对等点,并且它的OpenGL上下文被破坏了。这是你在使用这种画布时无法避免的事情。如果这不是想要的行为,就切换到NEWT。
在某些特定情况下,在某些硬件上创建另一个上下文可能会失败。如果您仍然使用最新版本的JOGL获得相同的堆栈跟踪,请填写一个bug报告:Testing
https://stackoverflow.com/questions/29599965
复制相似问题