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

AWT/Swing Java Discussion :

Mettre des images différentes sur une matrice de boutons


Sujet :

AWT/Swing Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Mettre des images différentes sur une matrice de boutons
    Bonjour,
    Dans le cadre scolaire, je dois réaliser un jeu de plateau avec 3 types de pions différents : les buffles, les indiens et les chiens

    J'ai affiché mon plateau ainsi que les pions dans mon interface graphique, mais pour le moment le buffle est un simple "B" etc...

    J'aimerais mettre des images différentes pour chacun des pions (ex: un GIF de buffle pour le buffle) masi je ne sais pas trop comment m'y prendre

    Voila le constructeur de ma fenêtre graphique:

    Nom : buffalo.png
Affichages : 600
Taille : 40,8 Ko

    Je possède une classe Buffle, une classe Pion et une classe Case.

    Si vous avez besoin de renseignements supplémentaires dites-moi, je réponds vite.

  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,

    Tu peux afficher simplement une image dans un bouton :
    avec image de type Icon.

    Le mieux pour gérer les fichiers, c'est de les mettre tant que ressources. Pour cela, il suffit que tu crées un dossier dans le dossier de sources, comme si tu créais un package, et tu mets les fichiers d'image dedans (png ou jpg). Et de gérer les différentes images sous forme de constantes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class UneClasse { // ici tu peux utiliser la classe qui créer ton plateau, ou une classe à part, ou n'importe
     
      public static final ImageIcon IMAGE_BUFFLE = ...
     
    }
    A la place des ..., pour charger le fichier correspondant, en tant qu'Icon, on va faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ImageIcon( UneClasse.class.getResource( name ) )
    ou name est le chemin de ton image, commençant par slash, relatif à ton dossier src. Par exemple, si ton fichier est buffle.png, et que le dossier que tu as créé (dont je parle au début) est "images", name ce sera "/images/buffle.png"). Si tu mets tes fichiers directement dans le dossier qui contient la classe, tu peux directement écrire : new ImageIcon( UneClasse.class.getResource( "buffle.png" ) ).

    Ensuite, tu n'as plus qu'a référencer tes constantes pour créer tes boutons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new JButton( UneClasse.IMAGE_BUFFLE );
    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
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci, super bien expliqué.

    En revanche, mon problème est de savoir, lors de la création de ma matrice de boutons, comment dire au programme "si le bouton que tu es en train de créer correspond à une case buffle, alors créé le bouton avec l'image buffle"

    car si je met l'image buffle à chaque fois que je créé un bouton
    avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int i = 0; i < casesligne ; i++) {
                for (int j = 0; j < casescolonne; j++) {
     
                    TabButt[i][j]=new JButton(Plateau.IMAGE_BUFFLE);
    j'obtiens ceci :

    Nom : buffalo everywhere.png
Affichages : 408
Taille : 69,4 Ko

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    ça y est j'ai trouvé !!!
    En fait c'était super simple, il suffisait de mettre le "b.setIcon(Plateau.IMAGE_BUFFLE);" dans la méthode afficher de la classe buffle .....

  5. #5
    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 howyadoin Voir le message
    ça y est j'ai trouvé !!!
    En fait c'était super simple, il suffisait de mettre le "b.setIcon(Plateau.IMAGE_BUFFLE);" dans la méthode afficher de la classe buffle .....
    Par exemple, ou mieux (toujours éviter de dépendre de ce que tu vas faire des attributs : imagine que tu veuilles dessiner l'image ailleurs que dans un bouton, tu vas devoir faire une autre méthode, etc), faire une méthode getImage() dans la classe Buffle (si tu as une classe commune à tous tes pions, au-dessus, tu peux aussi la mettre dans cette classe parente).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class Buffle extends Pion {
     
         public Buffle() {
             super("Buffle", MaClasse.Image_BUFFLE];
         }
     
     
    }
    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
    public class Pion {
     
         private final String name;
         private final Icon image;
     
         public Pion(String name, Icon image) {
             this.name=name;
             this.image=image;
         }
     
         public Icon getImage() {
               return image;
         }
     
     
    }
    Ou par abstraction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Buffle extends Pion {
     
         public Buffle() {
     
         }
     
         public Icon getImage() {
               return MaClasse.IMAGE_BUFFLE;
         }
     
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public abstract class Pion {
     
     
         public Pion() { 
         }
     
         public abstract Icon getImage();
     
     
    }
    Il y a pleins d'autre solutions (avec des enums par exemple, ou simplement avec un if, ou un switch, ou un map, etc.)
    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.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    ok, je vois

    maintenant j'ai un autre problème c'est que les pions ne s'effacent pas après chaque déplacement ...

    Nom : buffalo bug.png
Affichages : 473
Taille : 165,5 Ko

    j'ai pensé à une boucle do while mais je ne sais pas trop ou la mettre, je suis un peu perdu

  7. #7
    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
    Je préférerais avec du code, parce que l'image ça ne me parle pas vraiment, d'autant plus qu'il me faudrait savoir ce qu'on est censé voir ou ne pas voir sur cette image.
    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.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    oui effectivement. Mais j'ai encore trouvé la solution !!!

    Alors le plateau de jeu de base ressemble à ça :

    Nom : ex1.jpg
Affichages : 405
Taille : 8,4 Ko

    donc le buffle qui est descendu a laissé une "trainée" derrière lui. et les images du chef + chien qui ont bougé sont également restés à l'emplacement initial.



    La solution était : après un déplacement je vide la case précedente et je rajoute un pion Prairie (j'ai donc du créer un Pion prairie mais également un pion Rivière)

  9. #9
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Déplacement d'une image dans une matrice de bouton
    Bonjour,
    je suis débutante a la programmation des interfaces graphiques et j'ais un projet qui utiliser des GUI pour faire synchroniser les déplacement des robots dans une matrice [10][10] j'arrive pas a mettre une image dans un bouton et bouger cette image
    s'ils vous plait j'ai besoin de quelqu'un pour m'aider et merci infiniment

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

Discussions similaires

  1. Mettre des images aléatoirement dans une grille
    Par LeMarseillais78 dans le forum Interfaces Graphiques en Java
    Réponses: 48
    Dernier message: 08/04/2014, 19h42
  2. Définir des marges différentes sur une seule page
    Par GatH7614 dans le forum Mise en forme
    Réponses: 1
    Dernier message: 30/06/2008, 16h17
  3. [JpGraph] Mettre des valeurs manuellement sur une échelle
    Par Xandrine dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 26/06/2008, 11h11
  4. Réponses: 4
    Dernier message: 24/06/2007, 19h27
  5. faire tomber des images différentes sur un site
    Par jrnb58 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 27/11/2006, 12h30

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