franchement, j'arrive pas à trouver une solution. :?
Version imprimable
franchement, j'arrive pas à trouver une solution. :?
Voir Développons en Java, par JM Doudoux, chapître 1 à 4, pour commencer à avoir des bases. Le 5 et le 7 aussi ensuite.
merciii
Bonsoir
j'ai resté tout la journée de lire les 3 premier chapitre et j'ai vu des chose intéressant mais pour mon problème, je n'ai trouvé, meme je n'ai rien trouvé de map même un Tutorial :calim2:
je crois comme ça :?
Code:
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
27
28 public class SousFenetre extends JPanel { private static final int MARGIN = 10; private static final long serialVersionUID = 1L; private Map<String, JTextField> fieldMap = new HashMap<String, JTextField>(); public final static String FIELD_INITVAR_SMIN = "initvar.SMin"; public void setField(String id, String valeur) { JTextField field = fieldMap.get(id); if ( field!=null ) field.setText(valeur); } private JPanel creerInitVarPanel() { JPanel panel = new JPanel(); panel.setBackground(Color.white); SpringLayout layout = new SpringLayout(); panel.setLayout(layout); JLabel SMinLabel = new JLabel("SMin :"); panel.add(SMinLabel); JTextField field1 = new JTextField(); field1.setColumns(3); setField( FIELD_INITVAR_SMIN, "field1" ) ; panel.add(field1); JButton bouton = new JButton("Validée"); panel.add(bouton); SpringUtilities.makeCompactGrid(panel, 1, 3, 20, 5, 10, 13); return panel; }
Voilà, bien, tu progresses tout seul :D
Sauf que :
Ce n'est pas une chaîne de caractères qu'il faut mettre en valeur, c'est la variable field1 de type JTextField :Code:setField( FIELD_INITVAR_SMIN, "field1" ) ;
Code:setField( FIELD_INITVAR_SMIN, field1) ;
j'ai écrit "field1" parce que tu m'as dit ça
bon quand j'ai modifier par field1, le programme n'as pas accepter,Code:
1
2
3 et maintenant tu peux l'appeler comme ça : setField( FIELD_INITVAR_SMIN, "xxx" ) ;
et quand je modifier ce methode
il n'as pas encore accepterCode:
1
2
3
4
5 public void setField(String id, JTextField valeur) { JTextField field = fieldMap.get(id); if ( field!=null ) field.setText(valeur); }
Ah oui au temps pour moi, j'avais pas lu la ligne complète :oops:
Mais c'est parce que cette ligne de code n'a rien à faire là ! A la place, tu devrais avoir (ce que j'ai cru que tu avais mis là comme ligne vu que c'est ce que j'ai mis dans mon exemple !) :
L'affectation des valeurs aux champs devrait être fait ailleurs qu'à la construction de la GUI, ce qui permet d'avoir plus de souplesse : pouvoir annuler la saisie par exemple, faire un remise à zéro de tous les champs, etc...Code:fieldMap.put( FIELD_INITVAR_SMIN, field1 );
Je t'ai mis le processus de création dans un autre post : on créé la fenêtre et on appelle une méthode qui affecte les valeurs dans les champs (sous entendu : 2 étapes).
Bon, on pourrait avoir l'initialisation à cet endroit, si on s'en fout de la souplesse : mais au moins mettre le champ dans la map.
Sinon, tu te passes de map, tu passes tous tes champs en variables de classe, pour écrire les valeurs tu fais field1.setText("field1") en mettant une valeur en dur comme tu l'as fait (une sorte de prompt ?) et pour lire les valeurs saisies, tu tapes autant de fieldXXX.getText() qu'il y a de champs (10, 30, 50 ?), si ça te chante.
j'ai une question
si possible de modifier
par :Code:
1
2 setField( FIELD_INITVAR_SMIN, SMin ) ;
mon deuxieme question, c'est j'ai utilisé la méthode 2Code:
1
2 fieldMap.put( FIELD_INITVAR_SMIN, SMin );
est ce que je dois copie ce code dans ma classe d'origine fenetre ??Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public class Validation { private Map<String, JTextField> fieldMap = new HashMap<String, JTextField>(); public final static String FIELD_INITVAR_SMIN = "initvar.SMin"; private int SMin; private int SMax; private int SInit; public void setField(String id, String valeur) { JTextField field = fieldMap.get(id); if ( field!=null ) field.setText(valeur); } public String getField(String id) { JTextField field = fieldMap.get(id); if ( field!=null ) { return field.setText(valeur); } else { throw new IllegalArgumentException(); } } }
sachant que XXXXX est SMin (j'ai modifier le nom field1 par SMin) ????Code:
1
2
3 fenetre.setField(SousFenetre.XXXXX, valeur pour le champ XXXXX); fenetre.setField(SousFenetre.YYYYY, valeur pour le champ YYYYY);
la première ligne est un appel à la méthode qui met une valeur dans le champ texte correspondant à la constante, donc le second paramètre est une String
la seconde ligne est l'enregistrement de l'association entre la constante et l'instance de champ, pour pouvoir appeler la première ligne : le second paramètre est du type JTextField !
fon tous simplement je peux utilisé
j'ai une question, j'ai ajouter une bouton de calculerCode:fieldMap.put( FIELD_INITVAR_SMIN, SMin );
sachant que j'ai modifierCode:
1
2 JButton bouton6 = new JButton("Calculer"); panel.add(bouton6);
j'ai reçus un error:aie:8OCode:SpringUtilities.makeCompactGrid(panel, 6, 3, 20, 5, 10, 13);
sachant que j'ai obtenu cette résultat :
http://im32.gulfup.com/1viNr.png
pour le champ de saisie de demande de mois, cout stockage est un ensemble des valeurs de tableau, comment le champ de saisie pour savoir les valeurs qu'on doit le saisie dans un tel case ????? 8O