[Java] Désactiver un JButton
Résolu
jebok
Messages postés
358
Date d'inscription
Statut
Membre
Dernière intervention
-
jebok Messages postés 358 Date d'inscription Statut Membre Dernière intervention -
jebok Messages postés 358 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai une fenêtre dans laquelle se trouvent des TextFields et un bouton "Valider". Comment faire en sorte que le bouton reste inactif (c'est-à-dire grisé avec impossibilité d'appuyer dessus) tant que tous les champs ne sont pas remplis ?
Merci de votre aide
j'ai une fenêtre dans laquelle se trouvent des TextFields et un bouton "Valider". Comment faire en sorte que le bouton reste inactif (c'est-à-dire grisé avec impossibilité d'appuyer dessus) tant que tous les champs ne sont pas remplis ?
Merci de votre aide
A voir également:
- [Java] Désactiver un JButton
- Desactiver rond bleu whatsapp - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
2 réponses
Salut!
Tu trouveras ci-dessous deux classes.
La première (FormFillActionListener ) est un Listener qui peut enregistrer des JTextField ainsi qu'un JButton qui ne sera accessible que lorsque tous les chmaps enregistrés auprès de lui seront remplis.
Voici le code:
La seconde classe (FormFrame) est une JFrame qui te permet de tester cela.
A toi d'adapter le code.
;-)
HackTrack
Tu trouveras ci-dessous deux classes.
La première (FormFillActionListener ) est un Listener qui peut enregistrer des JTextField ainsi qu'un JButton qui ne sera accessible que lorsque tous les chmaps enregistrés auprès de lui seront remplis.
Voici le code:
import java.awt.Component; import java.util.HashMap; import java.util.Iterator; import javax.swing.JTextField; import javax.swing.event.CaretEvent; import javax.swing.event.CaretListener; import javax.swing.text.JTextComponent; /* * Created on Aug 17, 2005 * */ /** * @author HackTrack * */ public class FormFillActionListener implements CaretListener { private Component trigger; private HashMap components; public FormFillActionListener() { super(); trigger = null; components = new HashMap(); } public void caretUpdate(CaretEvent ce) { JTextField jtf = (JTextField)ce.getSource(); Boolean filledField = new Boolean(false); if (!jtf.getText().equals("")) { filledField = new Boolean(true); } components.put(jtf, filledField); boolean isFilled = true; Iterator it = components.keySet().iterator(); while (it.hasNext()) { JTextComponent tc = (JTextComponent)it.next(); if (((Boolean)components.get(tc)).booleanValue() == false) { isFilled = false; break; } } this.trigger.setEnabled(isFilled); JTextField comp = (JTextField)ce.getSource(); if (comp.getText() != null && !comp.getText().equals("")) { components.put(comp, new Boolean("true")); } else { components.put(comp, new Boolean("false")); } } public void registerComponent(JTextField tf) { tf.addCaretListener(this); components.put(tf, new Boolean(false)); } public void unregisterComponent(JTextField tf) { tf.removeCaretListener(this); components.remove(tf); } public void setTriggerComponent(Component c) { this.trigger = c; this.trigger.setEnabled(false); } }
La seconde classe (FormFrame) est une JFrame qui te permet de tester cela.
import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; /* * Created on Aug 17, 2005 * */ /** * @author HackTracks * */ public class FormFrame extends JFrame { private JTextField lastname; private JTextField firstname; private JTextField comments; private JButton send; public FormFrame(String name) { super(name); initialize(); } private void initialize() { setDefaultCloseOperation(EXIT_ON_CLOSE); FormFillActionListener fillListener = new FormFillActionListener(); JPanel formPanel = new JPanel(); formPanel.setLayout(new GridLayout(4, 2)); formPanel.add(new JLabel("Nom:")); lastname = new JTextField(25); fillListener.registerComponent(lastname); formPanel.add(lastname); formPanel.add(new JLabel("Prénom:")); firstname = new JTextField(25); fillListener.registerComponent(firstname); formPanel.add(firstname); formPanel.add(new JLabel("Commentaire:")); comments = new JTextField(40); fillListener.registerComponent(comments); formPanel.add(comments); send = new JButton("Envoyer"); fillListener.setTriggerComponent(send); formPanel.add(send); getContentPane().add(formPanel); } public static void main(String[] args) { FormFrame form = new FormFrame("Test formulaire"); form.pack(); form.setVisible(true); } }
A toi d'adapter le code.
;-)
HackTrack
a+