[JAVA] variable dans nom de bouton

annisseur -  
 annisseur -
Bonjour,
j'aimerais créer 4 boutons à l'aide d'un tableau et que pour chaque bouton créé la variable i (qui définit le nombre de bouton a créer) s'ajoute au nom du bouton (à la fin j'aurais ennemi1, ennemi2, ennemi3 et ennemi4 sous forme de boutons.
comment faut-il que je fasse pour y arriver?
voila un début de code que j'ai fait mais qui ne fonctionne pas

int ennemi[] = new int[3];

for(int i = 0; i<3; i++) {
JButton ennemi+i = new JButton();
}



A voir également:

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Tu ne peux pas faire ça. Par contre tu peux utiliser les tableaux.

JButton ennemi[] = new JButton[3];

for (int i=0; i<ennemi.length; i++)
    ennemi[i] = new JButton();
0
annisseur
 
merci
0
annisseur
 
Est-ce-que je peux ajouter une variable X et Y au bouton pour lui donner des coordonnées?
du genre

JButton ennemi[] = new JButton[3];

for (int i=0; i<ennemi.length; i++) {
ennemi[i] = new JButton();
ennemi[i].setBounds(100,864,20,20);
int ennemi[i]X = ennemi[i].getX();
int ennemi[i]Y = ennemi[i].getY();
}
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
1) Attention : getX() et getY() sont déjà des méthodes de JButton (héritées de JComponent), ce serait donc très imprudent de les réutiliser pour autre chose !

2) Evidemment que l'on peut rajouter des informations, c'est le principe même de l'héritage, mais certainement pas en écrivant des noms de variables comme "ennemi+i" ou "ennemi[i]X", ce qui ne veut rien dire (il y a une syntaxe à respecter !)

Exemple d'héritage :

import java.util.TreeMap; 
import javax.swing.JButton; 

public class JButtonWithDataMap extends JButton 
{ 
    private static final long serialVersionUID = 1; 
    
    private TreeMap<String,Object> data = new TreeMap<String,Object>(); 
    
    public Object setData(String key, Object value) 
    { 
        return data.put(key, value); 
    } 
    
    public Object getData(String key) 
    { 
        return data.get(key); 
    } 
}

Exemple d'utilisation :

JButtonWithDataMap ennemi[] = new JButtonWithDataMap[3];

for (int i=0; i<ennemi.length; i++)
{
    ennemi[i] = new JButtonWithDataMap();
    ennemi[i].setBounds(100,864,20,20);
    
    ennemi[i].setData("X",12);
    ennemi[i].setData("Y",34);
    
    // int x = (int) ennemi[i].getData("X"); 
    // int y = (int) ennemi[i].getData("Y"); 
}
0
annisseur
 
au lieu de mettre la variable dans le bouton c'est possible de faire une variable lettre + numéro qui dont le numéro augmente a chaque passage dans la boucle ? eX1, eX2, eX3,...
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
"c'est possible de faire une variable lettre + numéro"
Je l'ai déjà dit, et je le répète, tu ne peux pas trafiquer les noms de variables n'importe comment,si tu veux dynamiser des données tu as les tableaux : eX[1], eX[2], eX[3], ou les collections comme la TreeMap, mais le nom de variable est fixe (ici c'est eX).

"au lieu de mettre la variable dans le bouton"
Ce ne sont pas des variables que tu mets dans le bouton, ce sont des objets, les variables c'est ce qui te permet de manipuler ces objets. Après que tu mettes ces objets dans le bouton ou ailleurs, tout dépend ce que tu veux en faire.
0
ngounou25 Messages postés 96 Date d'inscription   Statut Membre Dernière intervention   4
 
JButton ennemi[] = new JButton[3];

for (int i=0; i<ennemi.length; i++)
ennemi[i] = new JButton("Ennemi " + (i + 1));

// Là, tu passe directement l'étiquette du bouton en paramètre au constructeur
0