[JAVA] variable dans nom de bouton

Fermé
annisseur - 3 nov. 2012 à 11:20
 annisseur - 12 nov. 2012 à 20:21
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
3 nov. 2012 à 12:52
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
merci
0
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 9/11/2012 à 15:25
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
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 12/11/2012 à 20:05
"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 mercredi 6 août 2008 Statut Membre Dernière intervention 5 juillet 2013 4
4 nov. 2012 à 11:25
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