IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

problème avec drawString() - Graphics


Sujet :

2D Java

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Points : 72
    Points
    72
    Par défaut problème avec drawString() - Graphics
    Bonjour,

    Je crée un programme qui ,entre autres, dessine une forme dans un JPanel ainsi qu'une String grâce a la méthode paint(Graphics g).
    La forme et la string sont modifiées par l'utilisateur et elles sont réaffichées après un changement de valeur.
    La forme se réaffiche correctement, mais la string se réaffiche au dessus de son ancienne valeur, ce qui devient illisible.

    J'ai fait quelques test mais rien à faire l'ancienne string ne s'efface pas.

    une idée ?

    merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    Il faut effacer le texte, en dessinant un rectangle de couleur sur le texte.

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 852
    Points : 22 869
    Points
    22 869
    Billets dans le blog
    51
    Par défaut
    Petit conseil : en general dans un JPanel on surcharge paintComponent() plutot que paint().

    Peux-tu s'il-te-plait nous poster les details de ta methode de rendu/peinture ?

  4. #4
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Points : 72
    Points
    72
    Par défaut
    Je vais essayer le rectangle,

    voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    public class PFinal extends JPanel {
        public void main(String[] arg){
    		}
        public void paint(Graphics g) {
    		int [] pointx = {75,125,160,160,125,75,40,40};
    		int [] pointy = {20,20,55,105,140,140,105,55};
    		Polygon p = new Polygon(pointx,pointy,8);
                    //dessin du cadre
    		g.setColor(Color.white);
    		g.fillPolygon(p);
    		g.setColor(Color.black);
    		g.drawPolygon(p);
    		g.fillRect(0,0,10,200);
    		g.fillRect(10,0,190,10);
    		g.fillRect(190,10,10,190);
    		g.fillRect(10,190,180,10);
    		//dessin de la String, exact est une chaine contenant soit "exact" soit "faux"
    		g.drawString("Pièce finale "+exact,50,170);
     
                    //dessin de la piece finale
    		if (piece_fin != null){
    			Transform[] diag = piece_fin.get_diags();
    			for (int i=0;i<4;i++){
    				if (diag[i] != null){
    				diag[i].dessiner(g,i+1);
    				}
    			}		
    		}
    }

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 852
    Points : 22 869
    Points
    22 869
    Billets dans le blog
    51
    Par défaut
    Il te faute reinitialiser la surface de dessin de ton JPanel en appelant super.paint(g)* ou en peignant manuellement un rectangle qui en couvre toute la surface.

    *Voir note plus haut a propos de paintComponent().

    EDIT - ah oui et si tu veux vraiment vraiment que ton JPanel soit transparent (sans reinitialisation du fond par une des methodes indiquees donc), tu dois mettre setOpaque(false); dans son constructeur ou lorsque tu l'initialises.

  6. #6
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Points : 72
    Points
    72
    Par défaut
    Peu importe que JPanel soit transparent ou pas, j'ai donc dessiné un Rectangle en fond et un petit rectangle de la couleur du fond pour cacher la String et la réafficher, ca marche nickel !

    merci bcp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec l’objet Graphics
    Par dot-_-net dans le forum Débuter
    Réponses: 3
    Dernier message: 16/10/2008, 23h53
  2. [Graphics] Problème avec paintComponent()
    Par Raiden1234 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 11/02/2008, 19h50
  3. Problème avec l'objet Graphics (couleur)
    Par deadstar62 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 27/08/2007, 13h35
  4. Réponses: 7
    Dernier message: 04/06/2006, 17h00
  5. [xsl:fo] problème avec external-graphic
    Par jehlg dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/10/2005, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo