Je vais essayer de décrire le code au mieux:
J'ai une classe Display qui extend Canvas3d
public class Display extends Canvas3D
Dans ma classe Fenetre, j'ajoute mon composant avec JFrame.add(Display)
this.getContentPane().add(display, BorderLayout.CENTER);
J'ai une seconde classe Fenetre qui se crée en plein écran à sa création.
public class FullScreenApp extends JFrame
Quand je veux que mon composant display se mette en plein écran, je crée une instance de la classe FullScreenApp et lui passe en parametre le Display.
Donc dans mon constructeur de la classe FullScreenApp, je fais un add(Display) et donc je vois bien mon composant en plein écran.
Seulement quand je veux (par une pression de touche par exemple), enlever le plein écran et donc revoir ma première fenetre, je fais un remove(Display) dans cette classe mais à ce moment là et bien j'ai une exception dans la classe de Display
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 Display3d.postRender(Display3d.java:749)
Visiblement le fait de faire un remove(Display) invalide le composant ou quelque chose du genre.
Partager