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();
}
}
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.
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 ...
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.
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.
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.