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 :

Problème d'affichage des images


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 39
    Points : 13
    Points
    13
    Par défaut Problème d'affichage des images
    Bonsoir, voici mon code et je vous explique on problème après:


    Classe CreationGrille:

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
     
    public class CreationGrille extends JPanel {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	// ça je touche pas, je ne sais pas tout ce que tu cherches à faire, et tu
    	// verras les erreurs dedans plus tard (j'en vois 2 au moins)
    	GenerateurCarte generateurCarte = new GenerateurCarte();// mon generateur de
    															// carte qui va me
    															// permettre de
    															// generer la carte
    	JoueurHumain joueurHumain = new JoueurHumain("joueur1");
    	JoueurHumain joueurHumain2 = new JoueurHumain("joueur2");
    	ArrayList<ModelJoueur> joueurs = new ArrayList<ModelJoueur>();
    	GrilleJeu grille = new GrilleJeu();
     
    	// je sais pas ou tu appelles initialisation, mais il pourrait être appelé
    	// dans le constructeur
    	public CreationGrille() {
    		initialisation();
    	}
     
    	public void initialisation() {
    		joueurs.add(joueurHumain);// j ajoute 2 joueurs humains
    		joueurs.add(joueurHumain2);
    		GrilleJeu grilleJeu = generateurCarte.genererCarte(5, 5,
    				ConstanteCarte.VALEUR_MAX_GENERATEUR / 5,
    				new ArrayList<ModelJoueur>());// je genere ma carte de la grille
    												// de jeu
    	}
     
    	// jusque là j'ai pas touché
     
    	// maintenant pour dessiner dans un panel, il faut au moins redéfinir paint
    	// :
    	public void paint(Graphics g) {
    		super.paint(g);
    		// et appeler le code qui dessiner ce qu'on veut...
    		grilleGraphique(g, grille);
    	}
     
    	public void grilleGraphique(Graphics g, GrilleJeu grilleJeu) {
    		CaseTerrain[][] caseTerrains = grille.getGrille();
     
    		int width = getWidth();
    		int height = getHeight();
    		int largeur = width / grille.getAbcisseMax();
    		int hauteur = height / grille.getOrdonneeMax();
    		// la y'a un truc bizarre : les abscisses c'est en x, et les ordonnées
    		// en y d'habitudes, mais bon je touche pas, peut être que c'est inversé
    		// dans grille.
    		for (int i = 0; i < grille.getAbcisseMax(); i++) {
    			for (int j = 0; j < grille.getOrdonneeMax(); j++) { 
    			caseGraphique(g, caseTerrains, i, j, largeur, hauteur);
    			}
    		}
    	}
     
    	private void caseGraphique(Graphics g,CaseTerrain[][] caseTerrains, int i, int j,int largeur,int hauteur) {
    		int x = j * largeur;
    		int y = i * hauteur;
    		TypesTerrains terrain = caseTerrains[i][j].getTerrain().getTerrainsJeu();
    		/* pour les images : aller dans la classe TypeGraphique et ajouter au case corespondant image = 'image coresponant au type';*/
    		g.drawImage(TerrainGraphique.selectImage(terrain, null), x, y, largeur, hauteur, this);
    	}
     
    	// en ensuite vient l'aspect clic (on pourrait faire mieux, mais ça va te
    	// suffire)
    	public void addImageClicker(final ImageClicker imageClicker) {
    		// en encapsule le faux listener dans le vrai listener de souris (ici un
    		// MouseAdapter, une implémentation de MouseListener qui ne t'oblige pas
    		// à implémenter toutes ses méthodes (parce qu'elles le sont déjà)
    		addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				// comme je l'ai dit, on calcule la hauteur et la largeur de la
    				// m^me manière qu'on la fait pour dessiner
    				int width = getWidth();
    				int height = getHeight();
    				int largeur = width / grille.getAbcisseMax();
    				int hauteur = height / grille.getOrdonneeMax();
    				// on détermine la colonne et la ligne dans la grille
    				int colonne = e.getX() / largeur;
    				int ligne = e.getY() / hauteur;
    				// on transmet les informations au faux listener, de manière à
    				// ce qu'on puisse réagir avec quand on l'utilise
    				imageClicker.click(grille.getGrille()[colonne][ligne]);
    				imageClicker.click(grille, colonne, ligne);
    			}
    		});
    	}
     
    	public static abstract class ImageClicker {
     
    		public ImageClicker() {
    		}
     
    		// tu n'est pas obligé de mettre les 2, la première peux suffire à tout
    		// faire
    		// la seconde peut simplifier certains traitements qui ne concernent que
    		// la case seule
    		// si tu ne mets qu'une seule méthode, au lieu d'une classe abstraite,
    		// ImageClicker peut être une interface
    		public void click(GrilleJeu source, int colonne, int ligne) {
    		}
     
    		public void click(CaseTerrain caseTerrain) {
    		}
     
    	}
    }
    La classe TerrainGraphique qui va s'occuper de dessier les images:

    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
    34
     
    public enum TerrainGraphique {
     
    	NON_DEFINIE(TypesTerrains.NON_DEFINIE), MER(TypesTerrains.MER), PLAINE(
    			TypesTerrains.PLAINE)
    	/*
    	 * ,FORET ( ),COLINE (), MONTAGNE ( ),JUNGLE ()
    	 */;
    	private Image image;
     
    	private TerrainGraphique(TypesTerrains terrains) {
    				this.image = selectImage(terrains, image);
    			}
    public static Image recupImage(ImageIcon in,Image img){
    	img = in.getImage();
    	return img;
    }
    	public static Image selectImage(TypesTerrains terrains, Image image) {
    		switch (terrains) {
    		//les case sont a completer pour que cela fonctionnent.
    		case NON_DEFINIE: 
    			break;
    		case MER: image = recupImage(new ImageIcon("Images/bleu.gif"),null);
    			break;
    		case PLAINE:
    			break;
     
    		default:
    			break;
    		}
     
    		return image;
    	}
    }

    La classe Main classe de test :

    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
     
     
    public class Main {
    	public static void main (String[]args){
     
    		JFrame frame = new JFrame();
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    	CreationGrille grille = new CreationGrille();
    	frame.setContentPane(grille);
    	frame.setVisible(true);
    	frame.setSize(200, 200);
     
     
    	grille.addImageClicker(new CreationGrille.ImageClicker(){
     
    		public void click(CaseTerrain caseTerrain) {
    			TerrainJeu terrain = caseTerrain.getTerrain();  
                                switch( terrain.getTerrainsJeu() ) {
                                case MER:
                                           System.out.println("mer"); //un vieil affichage pour l instant
                                           break;
                                case PLAINE:
                                	System.out.println("mer");// de meme
                                           break;
    							default:
    								break;
     
                                }  }
    		});
    	}
    }

    J'aimerais affiché dans mon JFrame les images qui représentent chaque terrain mais quand je lance mon main rien ne s'affiche...
    Je sais que mon code est long mais svp aidez moi..
    Merci de votre compréhension.

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Quelle est l'erreur qui s'affiche?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

Discussions similaires

  1. Probléme d'affichage des images!
    Par fatinfoOo dans le forum ASP.NET
    Réponses: 5
    Dernier message: 01/05/2009, 16h33
  2. Réponses: 2
    Dernier message: 18/03/2009, 10h47
  3. Réponses: 5
    Dernier message: 25/09/2008, 22h03
  4. Problème d'affichage des images sous apache/php
    Par kikoo_of_dijon dans le forum Apache
    Réponses: 9
    Dernier message: 03/11/2007, 16h24
  5. [XML/CSS/XSL] Problème d'affichage des images "dynamiqu
    Par popol55 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 06/04/2006, 16h24

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