Hallo,
ich habe ein JFrame in dem ein GLCanvas angezeigt wird. Nun möchte ich bei einem tastendruck zwischen fullscreen und window mode switchen können, leider klappt das nicht ganz, meine methode sieht so aus:
wenn ich das canvas nicht entferne und wieder hinzufüge geht das gar nicht!
so wie es ist wird die größe nicht geändert (fullscreen geht, aber bei window ist nur der rahmen da, aber es maximiert. Und ich kriege beim switchen jedes mal den fehler:
ich habe ein JFrame in dem ein GLCanvas angezeigt wird. Nun möchte ich bei einem tastendruck zwischen fullscreen und window mode switchen können, leider klappt das nicht ganz, meine methode sieht so aus:
Java:
private void switchToFullscreen(boolean b){
if(b){
this.setVisible(false);
this.remove(canvas);
this.dispose();
this.setUndecorated(true);
this.setResizable(false);
device.setFullScreenWindow(this);
this.add(canvas, BorderLayout.CENTER);
this.setVisible(true);
}else{
setVisible(false);
this.remove(canvas);
dispose();
setUndecorated(false);
device.setFullScreenWindow(null);
setSize(WIDTH,HEIGHT);
this.add(canvas, BorderLayout.CENTER);
//setLocationRelativeTo(null);
this.setVisible(true);
this.setSize(WIDTH,HEIGHT);
this.setPreferredSize(new Dimension(WIDTH,HEIGHT));
}
}
wenn ich das canvas nicht entferne und wieder hinzufüge geht das gar nicht!
so wie es ist wird die größe nicht geändert (fullscreen geht, aber bei window ist nur der rahmen da, aber es maximiert. Und ich kriege beim switchen jedes mal den fehler:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Buffers have not been created
at sun.awt.windows.WComponentPeer.getBackBuffer(WComponentPeer.java:877)
at java.awt.Component$FlipBufferStrategy.getBackBuffer(Component.java:3815)
at java.awt.Component$FlipBufferStrategy.updateInternalBuffers(Component.java:3800)
at java.awt.Component$FlipBufferStrategy.revalidate(Component.java:3915)
at java.awt.Component$FlipBufferStrategy.revalidate(Component.java:3897)
at java.awt.Component$FlipBufferStrategy.getDrawGraphics(Component.java:3889)
at javax.swing.BufferStrategyPaintManager.prepare(BufferStrategyPaintManager.java:508)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:264)
at javax.swing.RepaintManager.paint(RepaintManager.java:1224)
at javax.swing.JComponent.paint(JComponent.java:1015)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
at java.awt.Container.paint(Container.java:1780)
at java.awt.Window.paint(Window.java:3375)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)