9
votes

JPANEL Graphics Effacement et repeindre?

J'ai un 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.

Voici donc ce que je me demande: comment puis-je effacer les éléments existants de PaintComponent code>? Et à redessiner, puis-je appeler peinture compromis code> à nouveau? P>

J'essaie actuellement les éléments suivants: p> xxx pré>

dans la composante de peinture, je fais des choses comme: p>

if (flag2==true) {
    g.drawRect(...);
} else {
    g.drawLine(...);
}


1 commentaires

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 ())?


4 Réponses :


2
votes

Premièrement, pourquoi ne pas utiliser un énumé au lieu d'un booléen? XXX

En ce qui concerne votre problème, pouvez-vous répondre à mes commentaires dans votre question?


3 commentaires

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.



14
votes

Pour effacer tous les graphiques préalablement dessinés, invoquez g.clearrect (0, 0, getwidth (), getheight ()) .


0 commentaires

15
votes

Lorsque vous modifiez une propriété du panneau, vous devez invoquer:

super.paintComponent(g);


0 commentaires

2
votes

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.


0 commentaires