La méthode repaint en java (ça marche pas ? )
Résolu/Fermé
chaimamalika008@gmail.com
-
Modifié le 29 avril 2020 à 11:00
Chaima_0951 Messages postés 6 Date d'inscription mercredi 29 avril 2020 Statut Membre Dernière intervention 6 mai 2020 - 29 avril 2020 à 21:43
Chaima_0951 Messages postés 6 Date d'inscription mercredi 29 avril 2020 Statut Membre Dernière intervention 6 mai 2020 - 29 avril 2020 à 21:43
A voir également:
- La méthode repaint en java (ça marche pas ? )
- Waptrick java football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel football - Télécharger - Jeux vidéo
- Java jre - Télécharger - Langages
- Jeux java itel 5360 ✓ - Forum Mobile
2 réponses
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
29 avril 2020 à 11:25
29 avril 2020 à 11:25
Bonjour,
Le problème ici ce n'est pas le repaint de pp, mais c'est que tu n'as pas revalidate panel2, c'est à dire que Swing ne sait pas que tu as ajouté pp dans le panel2, c'est pour ça qu'il ne le dessine pas.
On pourrait modifier
Remarque : pour que ça fonctionne il faudrait aussi ajouter un Layout à panel2, sinon pp ne s'affichera pas, par exemple avec
Toutefois je te propose une autre approche, en supprimant panel2 qui est inutile.
Quant au repaint, il me paraît plus pertinent que ce soit la méthode incrémentEtat() qui le gère :
Le problème ici ce n'est pas le repaint de pp, mais c'est que tu n'as pas revalidate panel2, c'est à dire que Swing ne sait pas que tu as ajouté pp dans le panel2, c'est pour ça qu'il ne le dessine pas.
On pourrait modifier
pp.repaint(); panel2.add(pp);par
panel2.add(pp); panel2.revalidate();car c'est le panel2 qu'il faut rafraîchir maintenant qu'il a un nouveau contenu (ce qui appellera notamment la méthode paint de pp).
Remarque : pour que ça fonctionne il faudrait aussi ajouter un Layout à panel2, sinon pp ne s'affichera pas, par exemple avec
panel2 = new JPanel(new BorderLayout());
Toutefois je te propose une autre approche, en supprimant panel2 qui est inutile.
public class fenetrepotonce extends JFrame { public fenetrepotonce() { setSize(600, 500); setResizable(false); setDefaultCloseOperation(EXIT_ON_CLOSE); Potence pp = new Potence(); add(pp, BorderLayout.CENTER); JButton bt1 = new JButton("incrémentEtat"); bt1.addActionListener(evt -> { pp.trouve = false; pp.incrémentEtat(); }); JPanel panel1 = new JPanel(); panel1.add(bt1); add(panel1, BorderLayout.NORTH); }
Quant au repaint, il me paraît plus pertinent que ce soit la méthode incrémentEtat() qui le gère :
public void incrémentEtat() { état++; repaint(); }
Chaima_0951
Messages postés
6
Date d'inscription
mercredi 29 avril 2020
Statut
Membre
Dernière intervention
6 mai 2020
29 avril 2020 à 18:58
29 avril 2020 à 18:58
Juste je veux savoir
getSize fait quoi exactement?
Et pour quoi vous l'avais ajouter a votre code?
getSize fait quoi exactement?
Et pour quoi vous l'avais ajouter a votre code?
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
29 avril 2020 à 21:18
29 avril 2020 à 21:18
getSize() permet de récupérer la taille - réellement affichée - du composant, cela permet de dessiner sur tout l'espace disponible.
Chaima_0951
Messages postés
6
Date d'inscription
mercredi 29 avril 2020
Statut
Membre
Dernière intervention
6 mai 2020
>
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
29 avril 2020 à 21:43
29 avril 2020 à 21:43
Alors la potense va etre affichée dans tout la fenetre ,jai essayé d'enlever cette ligne de code et ajouter un constructeur a la classe potense que jedonne la dimention que je veux
29 avril 2020 à 14:21