# setUndecorated auf bereits sichtbares JFrame



## JavaPhil (20. Jan 2010)

Hi,

setUndecorated(true) funktioniert ja nur wenn das JFrame noch nicht setVisible(true) oder pack() ist...

Gibt es eine Möglichkeit dieses Verhalten irgendwie anders hinzubekommen.
Ich möchte nämlich schon das mein Fenster die üblichen Dekorierungen (- [] X) hat und wenn es in den Vollbildmodus (vom nutzer) gewechselt wird, sollen diese jedoch verschwinden..

Thx
Philipp


----------



## eRaaaa (20. Jan 2010)

rufe vorher auf dem frame dispose(); auf


----------



## JavaPhil (20. Jan 2010)

hmm sehr seltsam alles...

Das Fenster ist mein einzigstes daher wird alles beendet wenn ich dispose drauf aufrufe... Daher hab ich das ganze mal in einen thread gepackt jetzt schaltet es schon mal um..

blöderweise mag mein postRender den ich im Canvas3d aufrufe das Ganze überhaupt nicht...
er meint:

Exception occurred during Canvas3D callback:
java.lang.IllegalStateException: Cannot use Graphics2D object after dispose() is called
	at javax.media.j3d.J3DGraphics2DImpl.flush(J3DGraphics2DImpl.java:122)
	at java3d.View$2.postRender(View.java:179)
	at javax.media.j3d.Renderer.doWork(Renderer.java:1407)
	at javax.media.j3d.J3dThread.run(J3dThread.java:256)

hab das Graphics2D.xxx auch wärend des Umschaltens deaktiviert aber das hilft nix.. manchmal scheint es sogar einen Augenblick zu funktionieren aber dann rumms.


----------



## eRaaaa (20. Jan 2010)

also ich meinte das mit dem dispose() nur, um schnell umzuschalten, danach natürlich wieder setVisible!


```
@Override
	    public void actionPerformed(ActionEvent e) {
		frame.dispose();
		frame.setUndecorated(frame.isUndecorated() ? false : true);
		frame.pack();
		frame.setVisible(true);
	    }
```

hat bei mir jedenfalls funktioniert, ob das die "feine Art" ist kann ich dir leider nicht sagen


----------



## JavaPhil (20. Jan 2010)

mach ich auch

frame.dispose();
frame.setUndecorated(true);
frame.setIgnoreRepaint(true);
frame.setResizable(false);
frame.setVisible(true);

ich denke es liegt bei mir irgendwie am Java3d Canvas3d rendering


----------



## Ebenius (21. Jan 2010)

Sicher, dass da kein WindowListener am Frame hängt, der die Applikation beendet? Schalt doch mal einen Debugger an und mach Dir einen Brechpunkt in [c]Runtime.exit(int)[/c]. Dann schau Dir den StackTrace an, wenn sich die App beenden will.

Ebenius


----------

