Composants premier plan et PaintComponent en arrière plan - Java - Programmation
Marsh Posté le 21-09-2009 à 15:32:05
plutot que de mettre un bouton, tu ne pourrais pas simplement mettre une image de bouton?
De cette sorte, un clic sur le faux bouton se resumerait a un changement d'image.
Je sais bien que du point de vue IHM, c'est pas top, mais dans une vraie IHM, il est rare que les boutons disparaissent quand on clique dessus...
Marsh Posté le 23-09-2009 à 18:35:14
Comment savoir à quel endroit on a cliqué si c'est pas un bouton ?
Marsh Posté le 23-09-2009 à 19:21:19
éventuellement tu overrides les méthodes paint() et update() du bouton. Quand le bouton est là tu appelles l'implémentation normale via super() et quand le bouton doit disparaître du mets ton propre code qui dessine une image dans la zone.
C'est juste une idée, peut-être pas la meilleure qui soit
Marsh Posté le 24-09-2009 à 01:54:49
J'ai écrit le code suivant pour vérifier ma théorie et cela semble bien fonctionner:
Code :
|
Marsh Posté le 26-09-2009 à 12:14:25
J'ai trouvé pourquoi les boutons se mettaient en arrière plan:
J'ai crée une classe bouton héritée de JButton. Le fait d'utiliser la méthode paintComponent() ou paint() met les boutons en arrière plan.
Donc comment mettre une image sur les boutons sans ces méthodes ?
Marsh Posté le 26-09-2009 à 12:29:46
C'est bon j'ai trouvé la solution à tout mes problèmes:
le bouton se met en premier plan quand il a une image donc de base je lui met une image blanche, quand on fait un clique droit image de drapeau et quand on fait clique gauche setVisible(false)
Marsh Posté le 20-09-2009 à 18:28:07
J'ai une classe héritée de JPanel. J'y intègre 16*16 boutons(c'est un démineur) et j'aimerais les faire disparaître quand je clique dessus pour faire apparaitre le texte que j'ai mis en dessous avec un g.drawString(...),ou une image de mine g.drawImage(...): donc setVisible(false) .
Mais le paintComponent s'affiche en premier plan donc je vois déjà le texte ou l'image et faire disparaitre les boutons ne sert a rien.
J'ai mis des setOpaque() et des setVisible() de partout sa ne change rien.
Je sais que ce problème a déjà été posé de nombreuses fois mais je n'y ai jamais trouvé de réponse.Merci d'avance.