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 :

Dessiner dans un JPanel


Sujet :

2D Java

  1. #1
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut Dessiner dans un JPanel
    Bonjour à tous et bonne année,
    Alors voila mon petit souci n°2:
    Sur Windows quand je dessine dans un JPanel, je suis obliger de dessiner un grand carré blanc dans le fond pour pas que l'affichage se dédouble.
    Sur mac y a pas ce problème. Le truc c'est que je galère avec les ressources que java englouti et Windows m'oblige a faire un truc qui me bouffe presque 5% du processeur et 200 Mo de memoire.
    Juste pour un carré blanc!!!
    Y a pas une solution alternative?
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Montre-nous ton code. Une différence de fonctionnement entre 2 environnements peut s'expliquer par une mauvaise implémentation. Et explique ce que tu veux dire par "l'affichage se dédouble" ? Une copie d'écran par exemple serait démonstrative.

    Par ailleurs, par afficher un grand carré blanc, tu veux dire remplir le fond en blanc ? Il suffit d'affecter la couleur blanche au background du JPanel, de le laisser opaque, et surtout de ne pas remplacer la méthode standard de dessin sans appeler son parent.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    Tu comprendra pas mieux avec une photo,
    pour dire les choses clairement si je fait graphics.fill(un rectangle sur la souris),
    ca va m'afficher des carrés sur le passage de ma souris,
    si j'ai pas mis de background (le fameux carré) tout les carrés vont rester affiché à l'écran alors que je n'en veux qu'un sur ma souris;

    ensuite, que je face:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    panel.setBackground(Color.white);
    //ou
    graphics.setBackground(Color.white);
    Ca ne change rien du tout, même pas la couleur du background.
    Je suis obliger d'utiliser un Shape
    J'ai essayer de vider de contenu de panel a la fin de mon refresh ca fait rien...
    pareil pour graphics...
    et le truc c'est que sur mac, le même code ne me pose pas ce problème.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Pecose Voir le message
    si j'ai pas mis de background (le fameux carré) tout les carrés vont rester affiché à l'écran alors que je n'en veux qu'un sur ma souris;
    Ça, c'est parce que dans ta rédéfinition de paint() (ou paintComponent(), ou quelque soit la méthode que tu as rédéfinies), tu ne fais pas l'appel du super de la méthode : c'est elle qui habituellement se charge de préparer le contexte graphique. Le contexte graphique (l'instance de Graphics2D) est recyclé en Swing : c'est pour ça que la trace de ce qui avaient été dessiné auparavent est toujours présent. Normelement, si tu appelles super, tu obtiendras un contexte graphics clean. Sinon, il faut le faire toi-même et utiliser clearRect() plutôt qu'un fillRect().
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    Ok merci. Je test quand je rentre chez moi.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  6. #6
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    Ok c'est réglé.
    J'ai fait comme tu m'a dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    super.paintComponent(g);
    et ça marche nickel.
    Merci de ton aide.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  7. #7
    Membre régulier
    Inscrit en
    Octobre 2013
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 91
    Points : 102
    Points
    102
    Par défaut
    C'est tres interessant moi je n'ai pas compris le contexte de super. Merci

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par rame16 Voir le message
    C'est tres interessant moi je n'ai pas compris le contexte de super.
    Qu'est-ce que tu n'as pas compris exactement ? J'ai expliqué (dans un des messages ci-avant) pourquoi il fallait appeler super.paintComponent(g) (ou super.paint(g)) dans le contexte du problème qu'avait Pecose.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Dessiner dans un JPanel
    Par mattyeux dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 20/12/2006, 13h16
  2. probleme pour dessiner dans un JPanel
    Par L4BiN dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 02/08/2006, 15h01
  3. [Debutant]Dessiner dans plusieurs JPanels. Probleme
    Par ahage4x4 dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 22/05/2006, 12h32
  4. Dessiner dans différents JPanels
    Par N@sH dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 20/05/2005, 15h39
  5. Dessiner dans un JPanel
    Par Oliveuh dans le forum Composants
    Réponses: 5
    Dernier message: 19/07/2004, 12h13

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