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

Langage Java Discussion :

Variable Variable ???


Sujet :

Langage Java

  1. #1
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut Variable Variable ???
    Bonjour,

    J'ai une interface graphique formée de 42 boutons nommés case_positionx_positiony et ces boutons doivent changer de couleur en foncion d'une variable. Jusque la pas de problèmes, me direz-vous !

    C'est ensuite que ca se corse, n'ayant pas envie de trop alourdir mon code, je fais une fonction qui va changer la couleur en fonction de la variable. jusque là, tout va bien.

    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
    public void fonctionCase(int PosInfo[]){
    		int joueur = 1;
    		int gagne = 0;
    		int valid = 1;
    		int width = 0;
    		int height = 0;
     
    		joueur = PosInfo[0];
    		gagne = PosInfo[1];
    		valid = PosInfo[2];
    		height = PosInfo[3];
    		width = PosInfo[4];
     
    		if(valid == 1){
     
    			switch(joueur){
    				case 1: 
    			case_height_width.setBackground(java.awt.Color.orange);
    				break;
    				case 2:
    			case_height_width.setBackground(java.awt.Color.blue);
    				break;
    			}
     
    		}
    	}
    Comment faire pour que la case sur laquelle appliquer les couleurs change en fontion de mes variables ?

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    height = 2;
    width = 3;
     
    case_2_3.setBackground(java.awt.Color.blue);
    Est il possible de faire varier le nom de la case en fonction de deux autres valeurs et si oui comment ?

    Merci beaucoup

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 104
    Par défaut
    Remplace les 42 variables nommées case_positionx_positiony par un tableau à deux dimensions case[positionx][positiony].

  3. #3
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    C'est possible ca...

    car ce que j'appelle les 42 variables sont des boutons et je sais pas si un nom de bouton peut etre un tableau !?!?

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Par défaut
    oui tu met tes boutons dans le tableau et tu les récupére grace aux indices!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    height = 2; 
    width = 3; 
     
    case[height][width].setBackground(java.awt.Color.blue);

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 104
    Par défaut
    Tes boutons sont sans doute des JButton ?

    Tu peux déclarer et initialiser un tableau à 2 dimensions de JButton de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        JButton[][] cases = new JButton[6][];
        for (int ligne=0; ligne<6; ++ligne) {
          cases[ligne] = new JButton[7];
          for (int colonne=0; colonne<7; ++colonne) {
            cases[ligne][colonne] = new JButton();
          }
        }

  6. #6
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Merci beacoup

    oui ce sont bien des JButton

    Et en faisant ton code ca va directement me créer tout les boutons ?

    et j'ai plus qu'à changer dans chaque objet par exemple case_0_0 par case[0][0] ?

    ou j'ai encore autre chose à changer

    car mes boutons sont déja entièrement fait

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 104
    Par défaut
    Oui cela va les créer, mais sans texte ni icône en raison du new JButton() sans paramètres.
    Le code avait surtout pour but de te montrer comment initialiser un tableau à 2 dimensions.
    Si tu as 42 boutons différents, il va falloir que tu supprimes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cases[ligne][colonne] = new JButton();
    de la boucle et que tu initialises les 42 entrées du tableau avec tes boutons déjà faits.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    cases[0][0] = case_0_0;
    cases[0][1] = case_0_1;
    cases[0][2] = case_0_2;
    etc

  8. #8
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    donc si je récapitule, faut que je crée un tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JButton[][] case = new JButton[6][];
    ensuite faut que je remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private JButton case_0_0 = null;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    par case[0][0] = case_0_0
    ou alors je remplace tous les case_x_y par case[x][y] ???

  9. #9
    FFF
    FFF est déconnecté
    Membre éclairé Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Par défaut
    Si ton nombre de bouttons vient à varier au cours de ton programme, utilise la classe Vector<type d objet>... c'est comme un tableau sauf que la taille peut varier en + ou en -...

  10. #10
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    non le nombre de boutons va pas changer il y en a 42 en 7 colonnes 6 lignes. Pour le moment il sont fait comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private JButton case_0_0 = null;
    	private JButton case_0_1 = null;
    	private JButton case_0_2 = null;
    	private JButton case_0_3 = null;
    	private JButton case_0_4 = null;
    	private JButton case_0_5 = null;
    	etc...
    chaque bouton est comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private JButton getCase_3_1() {
    		if (case_0_2 == null) {
    			case_0_2 = new JButton();
    			case_0_2.setBounds(new java.awt.Rectangle(175,15,60,60));
    		}
    		return case_0_2;
    }
    et pour le moment j'ai dans chaque événement de bouton :
    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
     
    if(PosInfo[2] == 1){
     
    						switch(PosInfo[0]){
    							case 0 :
    								case_1_0.setBackground(java.awt.Color.red);
    							break;
    							case 1 :
    								case_1_0.setBackground(java.awt.Color.orange);
    							break;
    							case 2 :
    								case_1_0.setBackground(java.awt.Color.blue);
    							break;
    						}
     
    }
    Et j'aimerais faire une fonction qui empeche la repetition du code.

    voila

    P.S. Je suis desolé de peut etre vous faire vous repeter

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 104
    Par défaut
    Il faut d'abord que tu crées ton tableau de boutons non initialisés. Remarque qu'un tableau à 2 dimensions est en réalité un tableau de tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    JButton[][] cases = new JButton[6][];
    for (int ligne=0; ligne<6; ++ligne) {
      cases[ligne] = new JButton[7];
    }
    Ensuite tu fais une seule fonction pour remplacer tes 42 fonctions getCase_x_y().
    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
     
    /**
     * On récupère le bouton situé en (ligne,colonne) en le créant si besoin.
     * @param ligne la ligne où se situe le bouton
     * @param colonne la colonne où se situe le bouton
     * @return le bouton situé en (ligne,colonne)
     */
    private JButton getCase(int ligne, int colonne) {
      // le bouton existe-t-il ?
      if (cases[ligne][colonne] == null) {
        // non, donc on le crée et on stocke sa référence dans le tableau
        cases[ligne][colonne] = new JButton();
        // on le place là où il faut en fonction de ligne et colonne
        int x = calculeX(ligne,colonne);
        int y = calculeY(ligne,colonne);
        cases[ligne][colonne].setBounds(new java.awt.Rectangle(x,y,60,60));
      }
      // ici le bouton existe toujours
      return cases[ligne][colonne];
    }
    Dans ton code, tu remplaces tous les case_x_y par getCase(x,y).

  12. #12
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    voila ca marche maintenant ))

    merci beaucoup à vous tous

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

Discussions similaires

  1. Nom de variable variable
    Par Sparal dans le forum Access
    Réponses: 5
    Dernier message: 30/05/2006, 09h24
  2. Nom de variable variable
    Par TicTacToe dans le forum Langage
    Réponses: 2
    Dernier message: 01/04/2006, 16h33
  3. variables variable
    Par coolhead dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/08/2005, 12h32
  4. [Language]Variables variables
    Par Vader_666 dans le forum Langage
    Réponses: 4
    Dernier message: 25/04/2005, 22h52
  5. [Tableau][matrices]changement d'index et variables variables
    Par The Wretched dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 18/04/2005, 10h01

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