Un composite Graphiques de compensation et de repeindre?
J'ai un JPanel
avec un paintComponent()
fonction. Je vais l'appeler une fois, puis lorsque l'utilisateur clique sur un autre JButton
, je vais mettre quelques drapeau et souhaitez appeler cette fonction à nouveau comme il va faire quelque chose de légèrement différent après le drapeau est réglé.
Donc voici ce que je me demande: comment faire pour effacer l'existant à partir de paintComponent
? Et de rafraîchissement, dois-je viens de l'appeler paintComponent
de nouveau?
Actuellement, je suis en train suivantes:
flag2 = true;
repaint(); //I expect (want) paintComponent to be called again
Dans la peinture composant, je fais des trucs comme:
if (flag2==true) {
g.drawRect(...);
} else {
g.drawLine(...);
}
Mais à travers des tests, il semble comme il ya quelque chose de mal avec ce que je fais.
Merci pour toute aide.
OriginalL'auteur JDS | 2011-08-01
Vous devez vous connecter pour publier un commentaire.
Lorsque vous modifiez une propriété du panneau, alors vous devez appeler:
à cause de la composante à être repeint.
Puis la première instruction dans le paintComponent() la méthode devrait être:
Cela va peindre l'arrière-plan de sorte que vous pouvez maintenant faire votre peinture custom.
Si vous avez besoin de plus d'aide, puis poster votre SSCCE qui illustre le problème.
OriginalL'auteur camickr
Pour effacer tous les graphiques dessinées à invoquer
g.clearRect(0, 0, getWidth(), getHeight())
.OriginalL'auteur mre
Tout d'abord, pourquoi ne pas utiliser un enum au lieu d'un booléen?
En ce qui concerne votre question, pouvez-vous répondre à mes commentaires dans votre question?
Vous ne devriez pas avoir à effacer tous les éléments graphiques à réaliser ce que vous voulez.
Voir camickr réponse, si vous ne faites pas ce qu'il décrit, se concentrer sur le premier.
OriginalL'auteur Amir Afghani
Je suggère d'appeler revalidate(); au lieu de repaint(). revalidate() doit être appelée lors de la modification de la taille et de la mise en page ou lorsque vous ajoutez/supprimer des objets sur votre composite et mise à jour de tous ses enfants. À partir de ce que je peux dire, vous êtes toujours en utilisant le même de la peinture de l'objet tho, mais en changeant la disposition.
OriginalL'auteur John Snow