JTextField KeyPressed

cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011 - 30 mars 2010 à 16:37
 pinlap - 24 mai 2010 à 13:22
Bonjour
j'ai un champs de saisi jTextField (Nom), je veux implementer la methode jTextFieldKeyPressed pour controler la saisi, cad l'user saisi que des alphabets, pour evt.getKeyChar(retourner le caractere saisi) c'est bon mais je n'ai pas trouve comment bloque la saisi d'un cractere par exemple numerique , qu'elle est la methode qui permet de faire cela?
merci

22 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 mars 2010 à 16:52
Salut,

Je viens tout juste de te renvoyer vers ma source de filtre de saisie qui fait déjà cà... Ca correspond exactement à ton besoin. Par contre, c'est sûr, dans mes filtres, il n'y a pas celui qu'il te faut, mais tu peux très facilement en adapter un : tu prends le filtre de saisie des entiers, et tu remplaces juste l'expression régulière.

Si tu n'as pas compris comment l'utiliser ou la modifier pour filtrer que les chaînes textuelle en éliminant les chiffres, poses moi tes questions.

Ce n'est pas dans le KeyPressed que ca se passe (c'est possible, mais c'est un moyen détourné et non optimisé de faire cà), mais en définissant le document du JTextField
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011
30 mars 2010 à 16:54
je n'ai pas trouve comment adapter ton code a le mien et comment definisser le document de JTEXTField?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 mars 2010 à 17:10
Salut,

Si tu prend mon exemple de filtre pour saisir que des entiers :
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;

public class IntegerFilter extends AbstractFilter {

private static final long serialVersionUID = 1L;
protected Integer _max = 0; 

public void setMax(Integer max) {
_max = max;
}

public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException {
if (!isValid(str, "0123456789.", 0)) {
return;
}

if (str.indexOf("-") != -1) {
         if (str.indexOf("-") != 0 || offset != 0 ) {
            return;
       }
    }

if (!computeMax(new Double(_max), getText(offset, str))) {
return;
}

super.insertString(offset, str, attr);
}
}


A ton avis, où est-ce que je spécifie les caractères qui sont autorisés ?

La fonction insertString est appelée par le JTextField pour insérer des caractères dans son document. Donc j'ai surchargé cette méthode pour filtrer les caractères qui sont prohibés à l'utilisateur.

Pour des entiers, c'est assez simple, mais pour empêcher de saisir des entiers, c'est encore plus simple : il suffit de tester si les caractères à insérer contiennent des entiers, et si c'est le cas, ne pas les insérer...

Donc au lieu de :
if (!isValid(str, "0123456789.", 0)) {
    return;
}


il suffit de tester l'inverse (s'il s'agit d'un entier, ne rien faire) :
if (isValid(str, "0123456789", 0)) {
    return;
}


Le test du nombre positif ou non, tu n'en as pas besoin, et le test pour le maximum non plus...

Ce qui te donne au final :
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;

public class NotIntegerFilter extends AbstractFilter {

private static final long serialVersionUID = 1L;

public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException {
if (isValid(str, "0123456789", 0)) {
return;
}
super.insertString(offset, str, attr);
}
}


C'est pas bien compliqué.

Après, comment l'appliquer à un JTextField ? Regarde dans mon code de ma fenêtre de test (FrmMain)...
protected JTextField getTxtFilterInteger() {
    if (_txtFilterInteger == null) {
        _txtFilterInteger = new JTextField();
_txtFilterInteger.setDocument(new NotIntegerFilter());
    }
    return _txtFilterInteger;
}


Et voilà, tout est fait en moins de 15 lignes de code.

Après, comment remplacer ton JTextField par celui qui est filtré ?

Au lieu de faire :
tonPanel.add(new JTextField());


Il faut faire :
tonPanel.add(getTxtFilterInteger()));

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011
30 mars 2010 à 17:25
Dans mon cas est ce qu'il bloque l'insertion d'un caractere non alphabetique dans le champs Nom?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011
30 mars 2010 à 17:26
est ce que tu peux me montrer comemnt le faire par keypressed ta methode est complique un peu?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 mars 2010 à 17:48
Salut,

est ce qu'il bloque l'insertion d'un caractere non alphabetique


Le moyen le plus simple de le savoir, c'est d'essayer tu crois pas ?
Est-ce que au moins tu as pris la peine de télécharger ma source et la tester ?

ta methode est complique un peu

Avec les explications que je t'ai donné, tu trouves cà compliqué ? Tu trouves cà plus simple de devoir créer une instance d'un KeyListener, implémenter 3 fonctions, tester le KeyCode de la touche appuyée pour savoir s'il est autorisé ou non et stopper l'événement afin qu'il ne soit pas intercepté par le JTextField ?

Tu veux vraiment le faire avec KeyPressed ? Fais à ta guise, c'est toi qui voit. Je me demande bien pourquoi j'ai déposé des sources et expliquer comment les utiliser si c'est pour que personne ne les utilise.

Je te fais la version non optimisée (vu que de toute façon tu n'as pas l'air de vouloir faire optimisé) :
tonJTextField.addKeyListener(
    new KeyListener() {
        public void keyPressed(KeyEvent e) {
            int keycode  = e.getKeyCode();
            if ((keyCode >= 48) && (keycode <= 57)) {
                e.setKeyCode(e.VK_CANCEL);
            }
        }
        
        public void keyTyped(KeyEvent e) {
        }

        public void keyReleased(KeyEvent e) {
        }
    }
);

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011
30 mars 2010 à 17:54
C'est bon ta raison je vais faire le premier code que tu m'as donne, mais Dans mon cas est ce qu'il bloque l'insertion d'un caractere non alphabetique dans le champs Nom?
Merci pour ton aide
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 mars 2010 à 18:08
Salut,

Même remarque que tout à l'heure... tu crois pas que le meilleur moyen de le savoir, c'est de tester le code ?

Je t'ai dit qu'il faisait l'inverse de mon ancien filtre numérique : le filtre numérique était fait pour n'accepter QUE les caractères numériques. Donc si tu inverse le code, il accepte tout SAUF les caractères numériques.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011
31 mars 2010 à 15:50
Bonjour
j'ai essaye d'utiliser ton dernier code tonJTextField.addKeyListener mais il ne marche pas, je sais que l'interval que tu as choisis est celui des chiffres mais il ne marche pas
peux-tu m'aider?
0
cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011
31 mars 2010 à 16:04
Non non c'est bon j'ai utilise Abstracrfilter et il marche tres bien
100000 merci mon ami
0
cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011
31 mars 2010 à 19:04
J'ai une petite question
comment remplacer mon Jtextfield par celui qui est filtre?
Voici le code de ma jFrame :
il est auto genere par java Netbeans donc je ne peux pas le modifier je peux juste ajouter :

private void initComponents() {

textField1 = new java.awt.TextField();
jFormattedTextField1 = new javax.swing.JFormattedTextField();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jTextField3 = new javax.swing.JTextField();
jTextField4 = new javax.swing.JTextField();
jTextField6 = new javax.swing.JTextField();
jLabel7 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jLabel8 = new javax.swing.JLabel();
jComboBox1 = new javax.swing.JComboBox();
jComboBox2 = new javax.swing.JComboBox();
jFormattedTextField2 = new javax.swing.JFormattedTextField();

textField1.setName("textField1"); // NOI18N
textField1.setText("textField1");

jFormattedTextField1.setText("jFormattedTextField1");
jFormattedTextField1.setName("jFormattedTextField1"); // NOI18N

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Insertion des candidats");

jLabel1.setText("Nom :");
jLabel1.setName("jLabel1"); // NOI18N

jLabel2.setText("Prenom :");
jLabel2.setName("jLabel2"); // NOI18N

jLabel3.setText("Date de naissance :");
jLabel3.setName("jLabel3"); // NOI18N

jLabel4.setText("Code de direction :");
jLabel4.setName("jLabel4"); // NOI18N

jLabel5.setText("Presence :");
jLabel5.setName("jLabel5"); // NOI18N

jLabel6.setText("Wilaya :");
jLabel6.setName("jLabel6"); // NOI18N

jTextField1.setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR));
jTextField1.setName("jTextField1"); // NOI18N
jTextField1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField1ActionPerformed(evt);
}
});
jTextField1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
jTextField1KeyPressed(evt);
}
public void keyTyped(java.awt.event.KeyEvent evt) {
jTextField1KeyTyped(evt);
}
});

jTextField2.setName("jTextField2"); // NOI18N

jTextField3.setName("jTextField3"); // NOI18N

jTextField4.setName("jTextField4"); // NOI18N

jTextField6.setName("jTextField6"); // NOI18N

jLabel7.setText("(JJMMAAAA)");
jLabel7.setName("jLabel7"); // NOI18N

jButton1.setText("Sauvgarder");
jButton1.setName("jButton1"); // NOI18N
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

jButton2.setText("Initialiser");
jButton2.setName("jButton2"); // NOI18N

jLabel8.setText("Type d'examen :");
jLabel8.setName("jLabel8"); // NOI18N

jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Votre choix", "Professionnel", "Non professionnel" }));
jComboBox1.setName("jComboBox1"); // NOI18N

jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Votre choix", "Oui", "Non" }));
jComboBox2.setName("jComboBox2"); // NOI18N

jFormattedTextField2.setText("jFormattedTextField2");
jFormattedTextField2.setName("jFormattedTextField2"); // NOI18N

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(22, 22, 22)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 124, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(10, 10, 10)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField6, javax.swing.GroupLayout.PREFERRED_SIZE, 194, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField3, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 194, Short.MAX_VALUE)
.addComponent(jTextField2))
.addGap(18, 18, 18)
.addComponent(jLabel7))
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 134, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(170, 170, 170)
.addComponent(jFormattedTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addGroup(layout.createSequentialGroup()
.addGap(78, 78, 78)
.addComponent(jButton1)
.addGap(39, 39, 39)
.addComponent(jButton2)))
.addGap(24, 24, 24))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(45, 45, 45)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jFormattedTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel6)
.addComponent(jTextField6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel8)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 27, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2))
.addGap(29, 29, 29))
);

pack();
}//
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
31 mars 2010 à 19:08
Salut,

donc je ne peux pas le modifier je peux juste ajouter


Et voilà, tu as tout compris : l'éditeur graphique de netbeans, en plus de produire un code lamentable, bride les possibilités du développeur. Tu devrais vraiment le laisser tomber et coder toi même ton interface graphique, ainsi non seulement tu gagneras du temps, mais en plus tu pourras faire un code propre, optimisé, et lisible.

Du coup, tu es obligé d'utiliser le JTextField qu'il t'a construit, et faire avec.

Donc si tu avais compris mon exemple de code, tu aurais vite vu comment faire...

_txtFilterInteger.setDocument(new NotIntegerFilter());

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011
31 mars 2010 à 19:14
Dans la methode gettextfilterInteger j'ai ecris jTextField.setDocument(new IntegerFilter());

mais il ne fais rien
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
31 mars 2010 à 19:43
Salut,

Montre le code de ta méthode gettextfilterInteger. Est-ce que tu l'appelle quelque part ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011
31 mars 2010 à 20:37
Je l'ai ecris en dessous du code(auto genere) que je t'ai envoye, meme je n'ai pas trouve comment faire son appel? je l'ai implementer comme tu m'as dis et j'ai utilise mon jTextField
J'attends ta reponse mon ami

protected JTextField getTxtFilterInteger() {
if (jTextField1 == null) {
jTextField1 = new JTextField();
jTextField1.setDocument(new IntegerFilter());
}
return _txtFilterInteger;
}
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
31 mars 2010 à 21:14
Salut,

Ok, mais mon getter c'était pour l'ajouter à un panel, vu que tu as utilisé le constructeur de gui de netbeans, l'approche est différente : tu n'as plus besoin du getter vu que ton textfield est instancé et déjà ajouté à ton panel.

Il faut que tu mettre juste jTextField1.setDocument(new IntegerFilter()); quelque part où tu as le droit de le mettre... là je te laisse faire, je ne sais pas quelles sont les zones de codes autorisées à la modification par netbeans !

Toujours est-il qu'il faut que ce code soit exécuté pour que le document du jtextfield soit modifié.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011
1 avril 2010 à 12:31
Bonjour
Dans ta classe DateFilter j'ai remarque qu'il accepte une date de cette forme : 11/00/1999
Comment faire pour resoudre ce probleme?

Merci pour ton aide
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
1 avril 2010 à 12:48
Salut,

Ah, y'a une coquille dans mon code !

faut modifier la fonction isValid :
if (day <= 0 || day > 31 || month <= 0 || month > 12 || year <= 0 || year > 9999) {
return false;
}

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011
1 avril 2010 à 12:56
j'ai essaye mais je n'ai pas reussi, si je modifie n'imorte quoi dans cette fonction il ne me laisse saisir rien
0
cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011
8 avril 2010 à 17:29
Bonjour
j'ai crée un formulaire de saisie de données avec java, comment faire pour laisser le boutton envoyer désactivé jusqu'au remplissage de tous les champs?
c'est ce boutton qui permet de faire la connexion a la base de données, contient aussi les méthodes getteurs des jtextfield, executeupdate..etc
Merci pour ton aide
0
Rejoignez-nous