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 :

Soucis de Grille


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Par défaut Soucis de Grille
    Bonjour, je vous expliques mon problème j'ai regardé partout mais je n'ai rien trouvé ... Je dessine ma grille de cette façon là:


    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
     
    public void grilleGraphique(Graphics g) {
    		CaseTerrain[][] caseTerrains = grilleJeu.getGrille(); 
     
    		int width = getWidth();
    		int height = getHeight();
    		int largeur = width / grille.getAbcisseMax();
    		int hauteur = height / grille.getOrdonneeMax();
     
     
    		for (int i = 0; i < grille.getAbcisseMax(); i++) {
    			for (int j = 0; j < grille.getOrdonneeMax(); j++) {
    				int x = j * largeur;
    				int y = i * hauteur;
     
    				g.drawImage(images.get(grilleJeu[j][i]), x,
    						y, largeur, hauteur, this);
     
     
    			}
    		}
    Ce que j'aimerais c'est que les cases de cette grille soit exactement toute de meme taille quelques soit le nombre de case. Et faire au sorte dans ma JFrame faire un systeme de clic sur la souris de remonter ou redescendre avec la souris pour accéder à une case un peu plus haute. Si quelqu' un voudrais bien m'aider.

    Merci de votre compréhension.

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 095
    Par défaut
    Citation Envoyé par poutou138 Voir le message
    Ce que j'aimerais c'est que les cases de cette grille soit exactement toute de meme taille quelques soit le nombre de case
    C'est déja le cas, tu as passé longuer et largeur a la méthode drawimage qui fera que toutes les cases auront la meme taille puisque tu definis ces longueur et largeur avant la boucle.

    Citation Envoyé par poutou138 Voir le message
    Et faire au sorte dans ma JFrame faire un systeme de clic sur la souris de remonter ou redescendre avec la souris pour accéder à une case un peu plus haute
    Il faut implémenter un listener pour les évenements de la souris. Et pour chaque évenement mousePressed par exemple calculer en fonction de la position donnée par la souris sur quelle case tu es avec un petit calcul tout simple.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Par défaut
    Non ,si j ai beaucoup de case sa sera pas exactement la meme largeur que 5 cases

  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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu dis que tu voudrais que ta grille soit exactement de la même taille quelque soit le nombre de cases, et c'est bien ce que fait le code. Mais je suppose que tu voulais dire que tu voudrais que tes cases aient toujours la même taille quelque soit le nombre de cases, et la taille du panel.

    Dans le code suivant, tu détermines la largeur et la hauteur par rapport à la taille actuelle du panel et du nombre de cases :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int largeur = width / grille.getAbcisseMax();
    int hauteur = height / grille.getOrdonneeMax();
    Donc il suffit que largeur et hauteur soit des constantes, pour que les cases aient toujours la même taille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int largeur = 50;
    int hauteur = 50;
    Ou mieux, utiliser une constantes (un private final staic int LARGEUR=50;);

    Pour déplacer la grille, pour voir les cases qui sont en dehors de l'affichage, au clic de la souris comme tu dis, tu peux utiliser un JScrollPane. Tu mets les JPanel qui affiche ta grille dans le JScrollPane, et tu surcharges la méthode getPreferredSize() de ce JPanel pour qu'elle retourne la taille de la grille complète (donc la constante multiplié par le nombre de cases, respectivement, en largeur et hauteur). Si tu veux gérer un déplacement case par case au scroll, regardes les méthodes setUnitIncrement et setBlockIncrement, de JScrollPane, qui vont te permettre de configurer ça (en passant les constantes LARGEUR et HAUTEUR).
    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 averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Par défaut
    Qu entends tu par surcharger le getPreferredSize()?

  6. #6
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Un JScrollPane gère automatiquement le scrolling du composant qu'on y met à partir de sa taille préférentielle (celle du composant qu'on y met dedans), qui est obtenue par appel de la méthode getPreferredSize() de ce composant. Tu peux appeler cette valeur (une Dimension) en appelant setPreferredSize(new Dimension( largeurdecase * nombreDeCaseEnLargeur, hauteurdecase * nombreDeCaseEnHauteur), soit tu redéfinies (j'ai surcharger, mais le bon terme exacte est redéfinir, j'ai l'habitude de dire surcharger par abus de langage ) la méthode getPreferredSize() en y calculant cette taille.

    Plus de détails, dans le tutoriel d'Oracle (ou voir).
    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.

Discussions similaires

  1. soucis d 'affichage sous une grille
    Par fz.saida dans le forum Débuter
    Réponses: 1
    Dernier message: 06/08/2013, 22h40
  2. [File et Directory ListBox] Soucis de filtre
    Par Mercilius dans le forum Composants VCL
    Réponses: 8
    Dernier message: 04/04/2003, 16h17
  3. Réponses: 4
    Dernier message: 16/02/2003, 12h16
  4. [VB6] [Interface] Grille avec combobox
    Par khany dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/01/2003, 09h55
  5. Réponses: 2
    Dernier message: 03/10/2002, 17h24

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