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

AWT/Swing Java Discussion :

Changer de JPanel ayant un paintComponent


Sujet :

AWT/Swing Java

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Changer de JPanel ayant un paintComponent
    Bonjour,
    je fais un jeu avec swing et j'aimerais passé d'un JPanel pan (sous classe de JPanel avec un paintComponent) à un autre JPanel panOuverture (standar cette fois,instancié dans les attributs de la classe Jeu), pour pouvoir afficher le menu une fois le jeu fini.

    Donc dans une sous classe de JFrame nommée Jeu,

    j'ai fais cette fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void changePan(){
       this.remove(pan);
       this.add(panOuverture);
       this.pack();
       this.setVisible(true);
       pan.Ouverture.requestFocusInWindow();
    }
    et dans pan j'appelle la fonction changePan(), une fois que le joueur a perdu !

    Or, ça ne fonctionne pas, j'ai des erreurs du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5223)
    at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1249)
    at javax.swing.JComponent._paintImmediately(JComponent.java:5171)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
    Je voulais savoir si d'abord cette fonction est bonne parce que je ne sais pas trop géré les panels avec les paintComponent() comme vous pouvez le voir, je me dis que peut être j'oublie une instruction nécessaire.

    MERCI

  2. #2
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Je pense que c'est à cause du fait que j'appelle la fonction dans le paintcomponent, je cherche donc une solution alternative..

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    C'est un peu difficile de comprendre ce qu'il se passe sans avoir plus de code et une stacktrace complète. Il y a quelque chose qui m'étonne dans ce que tu dis : la méthode changePan() serait dans une méthode de la classe de pan ? Elle ne devrait pas : le this dans cette méthode représente une instance de la classe de pan donc. Est-ce que la variable pan pointe sur cette même instance ? Dans ce cas, this.remove( pan ) n'a aucun sens.

    Sinon, peut-être devrais-tu plutôt utiliser un CardLayout et y mettre les 2 instances de JPanel : le CardLayout te permettra d'afficher alternativement l'un ou l'autre très facilement, et t'évitera divers manipulations nécessaires lorsqu'on utilise remove/add dans un composant affiché (et ce n'est setVisible(true) comme tu le fais, mais revalidate()/repaint() normalement).

Discussions similaires

  1. Probleme avec mon code : Comment changer de JPanel
    Par serialkilled dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 17/12/2006, 10h13
  2. [NetBeans 5.5] Changer de jPanel dans un jFrame ?
    Par MAXXPER dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 13/11/2006, 07h18
  3. JPanel, changer le JPanel d'un Container
    Par kichemans dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/01/2006, 12h58
  4. [Swing]probleme pour changer de JPanel
    Par mereyj dans le forum Composants
    Réponses: 8
    Dernier message: 19/06/2005, 12h55
  5. Changer de JPanel en cours d'applications
    Par MrEddy dans le forum Composants
    Réponses: 3
    Dernier message: 12/05/2005, 17h22

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