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 :

Faire un pion


Sujet :

2D Java

  1. #21
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Points : 7
    Points
    7
    Par défaut
    YYYYessss !!!

    Done, j'ai trouvé le soucis, il faut revalidé et redessiné le JPanel.

    Donc lorsque je remets la taille, revalidate(); et repaint(); sont de rigueur.
    Ça marche.

    j'ai donc bien une ligne de case qui va pouvoir évoluer et se faire redessiner avec la possibilité de rajouter un pion si un joueur est présent sur la case avec un BufferedImage().


    Nouveau problème : réussir à ne pas couper les mots et à faire des retours à la ligne avec drawString();

  2. #22
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    http://docs.oracle.com/javase/tutori...uringtext.html

    Et tu as également la classe LineBreakMeasurer qui va t'être très utile
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #23
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Points : 7
    Points
    7
    Par défaut
    Merci Sinok, j'étais déjà allé consulter la Javadoc, et après avoir crié victoire pour avoir réussi à centrer du texte (avec difficulté), je n'ose même pas essayer de faire des retour à la ligne.

  4. #24
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Points : 7
    Points
    7
    Par défaut
    bon decidemment, les images ont un problème avec moi.




    Voici le code, j'ai bien vérifié mes conditions, elles sont correcte :

    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
    31
    32
    33
     
    public void paintComponent(Graphics g){
     
    		if(kind.equals("go")||kind.equals("go_to_jail")||kind.equals("jail")||kind.equals("free_parking")){
    			this.setPreferredSize(new Dimension(170,170));
    			this.revalidate();
    			this.repaint();
     
    			if(kind.equals("go")){
    				g.drawImage(new ImageIcon("img/go.jpg").getImage().getScaledInstance(170,170,Image.SCALE_DEFAULT), 0, 0, this);
     
    			}
    			else if(kind.equals("go_to_jail")){
    				g.drawImage(new ImageIcon("img/gotojail.jpg").getImage().getScaledInstance(170,170,Image.SCALE_DEFAULT), 0, 0, this);
     
    			}
    			else if(kind.equals("jail")){
    				g.drawImage(new ImageIcon("img/justvisiting.jpg").getImage().getScaledInstance(170,170,Image.SCALE_DEFAULT), 0, 0, this);
    			}
    			else{
    				g.drawImage(new ImageIcon("img/freeparking2.jpg").getImage().getScaledInstance(170,170,Image.SCALE_DEFAULT), 0, 0, this);
    			}
    		}
     
    		else if(kind.equals("community_chest")||kind.equals("chance")){
    			if(kind.equals("community_chest")){
    				g.drawImage(new ImageIcon("img/community_chest.gif").getImage().getScaledInstance(100,100,Image.SCALE_DEFAULT),10,10,this);
    			}
    			else {
    				g.drawImage(new ImageIcon("img/chance.gif").getImage().getScaledInstance(100,100,Image.SCALE_DEFAULT),0,0,this);
    			}			
    			this.repaint();
    		}

  5. #25
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Points : 7
    Points
    7
    Par défaut
    Bon c'est tout bête, la superposition des images est du au fait que je n'appel pas super.paintComponent(g);
    Je ne comprends pas comment ça marche, la méthode paintComponent est pourtant spécifique à ma classe qui étends JPanel... Pourquoi dois je l'appeler à nouveau ?

  6. #26
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par Garywald Voir le message
    Pourquoi dois je l'appeler à nouveau ?
    Tu ne dois pas l'appeler à nouveau, et je dirais même que tu ne dois pas l'appeler tout court!

    paintComponent est gérée par le système, toi tu te contentes d'appeler un repaint sur ton composant ou sur le composant parent, et le système s'occupera d'appeler le paintComponent qui va bien quand il faudra (ou quand il aura envie...).

    Le repaint va demander au système de faire un paintComponent. Donc tente de comprendre ce qu'il va se passer si en passant dans un paintComponent, celui ci rencontre un... repaint!

    Personnellement, je ne serais pas passé par un gridbag (qui quelque part t'oblige à faire joujou avec des resize et des revalidate et à insérer d'autres panels ou autre...). Quitte à devoir dessiner en manuel, autant ne dessiner que dans un panel sans avoir à gérer de layout...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  7. #27
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Points : 7
    Points
    7
    Par défaut
    Merci Plegat,

    En effet, pour le repaint, ça coule de source.
    Mais lorsque l'on est dans son projet, on perd le regard du spectateur qui peut faire remarquer des évidences qui ne nous saute pas aux yeux.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Python 3.X] problem pour faire sauter le pion d'un case à un autre
    Par nobsss dans le forum Général Python
    Réponses: 1
    Dernier message: 26/05/2015, 21h37
  2. faire un fichier .ini
    Par florent dans le forum C++Builder
    Réponses: 14
    Dernier message: 31/05/2002, 22h06
  3. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  4. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

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