Comment puis-je vérifier que JButton est pressé? Je sais qu'il existe une méthode qui s'appelle "isEnabled"
Alors j'essaie d'écrire un code à tester.
Voici le code:
final JButton btnAdd = new JButton("Add");
btnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
panel.add(btnAdd);
JButton btnConfirm = new JButton("Check Out");
btnConfirm.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (btnAdd.isEnabled()) {
System.out.println("Add Button is pressed");
}
if (!btnAdd.isEnabled()) {
System.out.println("Add Button is not pressed");
}
}
});
Lorsque je lance ce code, le code ne donne que le bouton "Ajouter", bien que je n'aie pas appuyé sur le bouton "Ajouter". Pourquoi ça se passe comme ça?
JButton
a un modèle qui répond à cette question:
isArmed()
, isPressed()
, isRollOVer()
etc. Par conséquent, vous pouvez demander au modèle la réponse que vous recherchez:
if(jButton1.getModel().isPressed())
System.out.println("the button is pressed");
Il semble que vous deviez utiliser JToggleButton
:
JToggleButton tb = new JToggleButton("Push me");
tb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JToggleButton btn = (JToggleButton) e.getSource();
btn.setText(btn.isSelected() ? "pushed" : "Push me");
}
});
JButton#isEnabled
modifie l'interactivité utilisateur d'un composant, c'est-à-dire si un utilisateur est capable d'interagir avec lui (appuyez dessus) ou non.
Lorsque vous appuyez sur une JButton
, un événement actionPerformed
est déclenché.
Vous recevez Add button is pressed
lorsque vous appuyez sur le bouton de confirmation, car le bouton Ajouter est activé. Comme indiqué, cela n’a rien à voir avec le démarrage appuyé du bouton.
En fonction de votre code, si vous essayez de vérifier le début "actionné" du bouton d'ajout dans la variable ActionListener
du bouton de confirmation, il sera toujours faux, car le bouton sera à l'état activé uniquement pendant l'appel de la variable ActionListener
du bouton d'ajout.
Sur la base de toutes ces informations, je suggérerais que vous envisagiez d'utiliser une variable JCheckBox
que vous pouvez ensuite utiliser JCheckBox#isSelected
pour déterminer si elle a été vérifiée ou non.
Examinez de plus près Comment utiliser les boutons pour plus de détails
Il suffit de faire System.out.println(e.getActionCommand());
dans la fonction actionPerformed(ActionEvent e)
. Cela vous indiquera quelle commande vient d'être exécutée.
ou
if(e.getActionCommand().equals("Add")){
System.out.println("Add button pressed");
}
La méthode que vous essayez d'utiliser vérifie si le bouton est actif:
btnAdd.isEnabled()
Lorsqu'il est activé, tout composant associé à cet objet est actif et peut déclencher la méthode actionPerformed de cet objet.
Cette méthode ne vérifie pas si le bouton est enfoncé.
Si je comprends bien votre question, vous souhaitez désactiver votre bouton "Ajouter" une fois que l'utilisateur a cliqué sur "Commander".
Essayez de désactiver votre bouton au début: btnAdd.setEnabled(false)
ou après que l'utilisateur ait cliqué sur "Check out".