[Java] Désactiver un JButton
Résolu
jebok
Messages postés
358
Statut
Membre
-
jebok Messages postés 358 Statut Membre -
jebok Messages postés 358 Statut Membre -
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
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
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+