Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mon JLayeredPane n'a plus aucun effet une fois hérité

    17 janvier 2011 à 19:08:54

    Bonjour,
    Je fais du Java depuis un bon bout de temps mais là je galère avec un simple problème d'héritage avec une IHM écrite en swing ...

    En fait, dès qu'une certaine touche est tapée par l'utilisateur, la fenêtre est censée se rafraîchir :

    if(posX == 210) 
              new Classe2();
    


    ... pour ce faire, je fais appel à une nouvelle classe (Classe2()) qui hérite de la classe dans laquelle elle est appelée (ici, Classe1() ) (hum, vous arrivez toujours à suivre ? :-° ). Dans cette Classe1(), j'ai un JLayeredPane qui contient tous les élèments de la fenêtre et lorsque je fais un "layeredPane.removeAll();" tous les éléments disparaissent correctement; le problème c'est plutôt quand j'écris exactement le même code dans la classe héritée, là, ça compile et ça s'exécute très bien ... Mais l'affichage reste le même .

    Quelques "passages de mon code" :

    public Classe1 extends JFrame
    {
        public Classe1()
        {
            // [...]
    
            //Create and set up the layered pane.
            layeredPane = new JLayeredPane();
            layeredPane.setPreferredSize(new Dimension(1000, 1000));
    
            // [...]
    
            this.setLayeredPane(layeredPane);
        }
    }
    


    public class Classe2 extends Classe1
    {
        public Classe2()
        {
            super();
    
            // Marche pas ...
            layeredPane.removeAll();
        }
    }
    


    Merci d'avance ;)
    • Partager sur Facebook
    • Partager sur Twitter
    Le Monde du Web vous intéresse (Développement Web, Tutoriels...) ? Rejoignez-moi sur YouTube !
      17 janvier 2011 à 19:40:35

      Bonjour, il y a une erreur dans ta logique (logique que d'ailleurs je ne comprends pas). Alors je ne peux que t'expliquer qu'à moitié ce qui ne va pas.

      J'ai l'impression que tu crées une occurence de Class2 sans l'afficher comme une fenêtre normale, et donc c'est normal que le résultat ne s'affiche pas.

      Ce que je veux dire c'est que le problème ne peut pas se créer avec un héritage aussi basique (ça n'a aucun sens, tu n'as même pas fait de classe héritée de LayeredPane). Donc à mon avis tu ne manipules pas les bons objets.
      • Partager sur Facebook
      • Partager sur Twitter
        17 janvier 2011 à 19:58:34

        Merci pour ta réponse. En fait, oui, je veux créer une "copie" de la première fenêtre avec simplement un contenu différent. Mais je ne vois pas vraiment comment faire ... Je souhaite en fait garder les mêmes propriétés que la première fenêtre avec les même attributs, c'est pour cette raison que j'ai pensé à l'héritage ...
        • Partager sur Facebook
        • Partager sur Twitter
        Le Monde du Web vous intéresse (Développement Web, Tutoriels...) ? Rejoignez-moi sur YouTube !
          17 janvier 2011 à 22:17:24

          Tu veux faire une copie affichable ? Donc au final tu auras deux fenêtres ! Cependant il ne faut pas oublier pack() et setVisible(true) car une JFrame ne s'affiche pas par défaut.
          • Partager sur Facebook
          • Partager sur Twitter
            17 janvier 2011 à 22:25:51

            Non justement :p . Je ne veux qu'une seule fenêtre avec le contenu à l'intérieur qui s'actualise en fonction d'un événement.
            • Partager sur Facebook
            • Partager sur Twitter
            Le Monde du Web vous intéresse (Développement Web, Tutoriels...) ? Rejoignez-moi sur YouTube !
              17 janvier 2011 à 22:53:12

              Eh bien ça n'a pas de sens d'utiliser l'héritage pour ça. Mets tout dans ta Classe1 et arrange-toi pour réaliser l'action soit dans ton écouteur (classe anonyme) directement, soit dans une méthode de Classe1.
              • Partager sur Facebook
              • Partager sur Twitter

              Mon JLayeredPane n'a plus aucun effet une fois hérité

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown