J'ai un Voici donc ce que je me demande: comment puis-je effacer les éléments existants de J'essaie actuellement les éléments suivants: p> dans la composante de peinture, je fais des choses comme: p> jPanel code> avec un
PaintComponent () code> fonction. Je l'appellerai une fois, alors lorsque l'utilisateur clique sur un autre
jbutton code>, je vais définir un signal et que vous souhaitez appeler cette fonction, car il fera quelque chose de légèrement différent après la définition du drapeau.
PaintComponent code>? Et à redessiner, puis-je appeler
peinture compromis code> à nouveau? P>
if (flag2==true) {
g.drawRect(...);
} else {
g.drawLine(...);
}
4 Réponses :
Premièrement, pourquoi ne pas utiliser un énumé au lieu d'un booléen? En ce qui concerne votre problème, pouvez-vous répondre à mes commentaires dans votre question? P> P>
La logique que j'ai est bien, je pourrais probablement utiliser Enum mais quoi que ce soit ce n'est pas mon problème. Mon problème est que j'ai besoin d'effacer tous les graphismes dessinés, puis appellez de la peinture à nouveau compromis pour ce JPanel.
Vous ne devriez pas avoir besoin d'effacer tous les graphismes pour atteindre ce que vous voulez.
Voir la réponse de Camickr, si vous ne faites pas ce qu'il est décrit, concentrez-vous sur cette première.
Pour effacer tous les graphiques préalablement dessinés, invoquez g.clearrect (0, 0, getwidth (), getheight ()) code>
. P>
Lorsque vous modifiez une propriété du panneau, vous devez invoquer:
super.paintComponent(g);
Je suggérerais d'appeler Revalidate (); au lieu de repeindre (). REVALIDATE () doit être appelé lorsque vous modifiez la taille / la mise en page ou lorsque vous ajoutez / supprimez des objets sur votre JPanel et mettra à jour tout ce qu'il s'agit des enfants. D'après ce que je peux dire, vous utilisez toujours le même objet de peinture que cela puisse changer sa mise en page. P>
Vous n'appelez pas repeindre () de la méthode de la PaintComponent, êtes-vous? Êtes-vous sûr que l'appel repeindre () est associé au panneau que vous souhaitez rafraîchir? (E.G. MyPanel.Repaint ())?