IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

un canvas, plusieurs fenêtres


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 22
    Par défaut un canvas, plusieurs fenêtres
    Bonjour,

    Je dispose de deux fenetre.
    Dans l'une d'entre elle j'ai ajouté un composant (un canvas3d même si je ne pense pas que cela soit important).
    Quand je crée la seconde fenetre je lui passe ce composant qui vient donc se mettre dans la nouvelle fenetre. (je précise que la seconde fenêtre est en plein écran)

    Cependant, dès que j'ai fait ça, la première fenêtre n'affiche plus rien (bon a la limite ça ne m'ennui pas puisqu'elle n'est pas visible) mais même après avoir fermé la seconde (avec un dispose()), il ne se passe toujours rien.

    En gros j'aimerai savoir comment on fait pour passer un composant d'une fenêtre à une autre ?

  2. #2
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    ton composant ne peut être que dans une fenetre à la fois. le fait de l'ajouter à ta deuxieme le retire de la premiere. Avant de dispose() ta deuxieme fenetre ajoute le à ta première.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 22
    Par défaut
    c'est ce que j'ai essayé de faire, seulement ça ne marche pas et dans tous les cas, des que je ferme la fenetre qui est en plein écran, le programme plante et s'arrete immédiatement.

  4. #4
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    le programme plante et s'arrete immédiatement.
    Un petit bout de ton code et de l'exception (si il y a exception) s'il te plait

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 22
    Par défaut
    Je vais essayer de décrire le code au mieux:

    J'ai une classe Display qui extend Canvas3d
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Display extends Canvas3D
    Dans ma classe Fenetre, j'ajoute mon composant avec JFrame.add(Display)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.getContentPane().add(display, BorderLayout.CENTER);
    J'ai une seconde classe Fenetre qui se crée en plein écran à sa création.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    remplace ton FullScreenApp...remove(display) par un JFrame.add(display)

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/06/2006, 17h55
  2. D6/Interbase plusieurs fenêtres utilisant le même IBDataSet
    Par Y.Guillermin dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/02/2006, 08h27
  3. [Tkinter] Plusieurs fenêtre avec Tkinter
    Par cyrpaut dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/01/2006, 23h24
  4. TForm pour plusieurs fenêtre dans une même fonction ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/11/2005, 13h38
  5. Interface graphique avec plusieurs fenêtres
    Par Copps dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 30/03/2005, 19h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo