Récupérer le nom de la variable

doudinet - 12 mars 2013 à 10:20
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 12 mars 2013 à 15:34
Bonjour,
je voudrai savoir comment parcourir un fichier , récupérer le nom de la variable JTextField et la mettre dans une liste

//déclaration des variables
JTextField parite1 = new JTextFieled ();
JTextField parite2 = new JTextFieled ();
JTextField parite3 = new JTextFieled ();
JTextField parite4 = new JTextFieled ();
JTextField parite5 = new JTextFieled ();
JTextField parite6 = new JTextFieled ();


Merci :)

4 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
12 mars 2013 à 11:15
Salut,

Je n'ai rien compris, c'est quoi ton problème ? lire un fichier ?
0
Bonjour Monsieur,
Merci
je voudrai savoir comment récupérer le nom de la variable JTextField et la mettre dans une liste

//exemple de déclaration des variables
JTextField parite1 = new JTextFieled (); 
JTextField parite2 = new JTextFieled (); 
JTextField parite3 = new JTextFieled (); 
JTextField parite4 = new JTextFieled (); 
JTextField parite5 = new JTextFieled (); 
JTextField parite6 = new JTextFieled ();


je veux avoir une liste qui contient les noms des variables de type Jtextfiled seulement.
Ma_liste= Partie1, partie2, partie3, partie4, partie5, partie6

et puis faire parcourir cette liste pour chercher les lignes qui contiennent setBounds ==>

parite1.setBounds(new Rectangle(130, 264, 211, 11));
parite2.setBounds(new Rectangle(130, 264, 211, 11));
parite3.setBounds(new Rectangle(130, 264, 211, 11));
parite4.setBounds(new Rectangle(130, 264, 211, 11));
parite5.setBounds(new Rectangle(130, 264, 211, 11));
parite6.setBounds(new Rectangle(130, 264, 211, 11));


pour que je puisse effectuer mes modifications sur l'hauteur de ces lignes de setBounds

voila ou je me suis arrivée , je suis entrain de parser un fichier .
1) mettre les noms des variables dans une liste
2)parcourir la liste pour chercher les variables.SetBounds
3)remplacer la chaîne parite1.setBounds(new Rectangle(130, 228, 211, 17)); par parite.setBounds(new Rectangle(130, 228, 211, 20));
tout en gardant " parite1.setBounds(new Rectangle(130, 228, 211,"


JTextfield jtf = null;
double height= 20;
 
ArrayList<String> lesNoms = new ArrayList<String>();
if (line.contains("JTextField")) { 
lesNoms.add(line.getName()); //voila le message d'erreur a ce niveau
//The method getName() is undefined for the type String
 
 
 for(int i=0; i<lesNoms.size(); i++)
   {  if(line.contains(lesNoms[i]+"."+"SetBounds")) {
line = line.replace(lesNoms[i]+"."+"setBounds(new Rectangle("*","*" ,"*","*"))
,"lesNoms[i]+"."+"setBounds(new Rectangle("+*+","+*+" ,"+*+","+20+")");
 // ici j ai mis + pour concaténer les chaines et * pour garder les mêmes valeurs mais ça ne marche pas(j ai pas su traduire ça en java )
}

Pouvez vous me guider ?
0
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
12 mars 2013 à 15:07
Re, franchement je me répète mais ça fait de la peine à voir... tout ce cass-tête pour un problème aussi simple à la base.

Pour ton problème actuel, tout dépend si tes JTextField sont de variables locales (de méthode) ou des champs de classe. Si ce sont des champs, même privés tu peux y avoir accès sinon, je pense que ce sera beaucoup plus compliqué. Voilà un bout de code qui montre comment procéder par introspection pour des champs :

package javafr;

import javax.swing.JTextField;

/**
 * @author Jonathan Guéhenneux
 */
public class Classe {

private JTextField champ1;
private String champ2;
}


package javafr;

import java.lang.reflect.Field;

import javax.swing.JTextField;

/**
 * @author Jonathan Guéhenneux
 */
public class TestClasse {

public static void main(String[] args) {

Field[] champs = Classe.class.getDeclaredFields();

for (Field champ : champs) {

if (JTextField.class.isAssignableFrom(champ.getType())) {
System.out.println(champ.getName());
}
}
}
}
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
12 mars 2013 à 15:34
Je n'avais pas fais le lien entre les deux messages !

Tu pourrais tout de même éviter de poser plusieurs fois les mêmes questions, surtout quand on te répond !
0
Rejoignez-nous