setUndecorated auf bereits sichtbares JFrame

JavaPhil

Mitglied
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
 
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.
 
also ich meinte das mit dem dispose() nur, um schnell umzuschalten, danach natürlich wieder setVisible!

Java:
	    @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 😀
 
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
 
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
 

Neue Themen


Zurück
Oben