webentwicklung-frage-antwort-db.com.de

Wie kann ich überprüfen, ob JButton gedrückt wurde? Wenn das isEnabled () nicht funktioniert?

Wie kann ich überprüfen, ob JButton gedrückt wurde? Ich weiß, dass es eine Methode gibt, deren Name "isEnabled" ist

Also versuche ich einen Code zum Testen zu schreiben.

  1. dieser Code hat 2 Jbuttons, die "Add" Button und "Checkout" Button sind.
  2. der Code zeigt die Meldung "Schaltfläche Hinzufügen ist gedrückt" an, wenn ich nach dem Drücken der Schaltfläche "Hinzufügen" die Schaltfläche "Kasse" drücke. Wenn die Schaltfläche "Hinzufügen" jedoch nicht vor dem Drücken der Schaltfläche "Kasse" gedrückt wird, zeigt der Code die Meldung "Schaltfläche hinzufügen ist nicht gedrückt".

Hier der 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");
        }
    }
});

Wenn ich diesen Code ausführe, wird im Code nur die Schaltfläche "Hinzufügen" gedrückt, obwohl ich die Schaltfläche "Hinzufügen" nicht gedrückt habe. Warum kommt es so vor?

4
Dexter Moregan

JButton hat ein model welches diese Frage beantwortet:

  • isArmed()
  • isPressed()
  • isRollOVer() 

usw. Daher können Sie das Modell nach der Antwort fragen, die Sie suchen:

     if(jButton1.getModel().isPressed())
        System.out.println("the button is pressed");
13
Sage

Anscheinend müssen Sie JToggleButton verwenden:

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");
    }
});
3
alex2410

JButton#isEnabled ändert die Benutzerinteraktivität einer Komponente, das heißt, ob ein Benutzer damit interagieren kann (drücken) oder nicht.

Wenn eine JButton gedrückt wird, wird ein actionPerformed-Ereignis ausgelöst.

Sie erhalten Add button is pressed, wenn Sie die Bestätigungstaste drücken, da die Hinzufügen-Schaltfläche aktiviert ist. Wie gesagt, hat es nichts mit dem gedrückten Start der Taste zu tun.

Wenn Sie versucht haben, den "gedrückten" Start der Schaltfläche "Hinzufügen" innerhalb der ActionListener der Bestätigungstaste zu überprüfen, wäre dies immer "false", da sich die Schaltfläche nur im gedrückten Zustand befindet, während die Variable ActionListeners der Schaltfläche "Hinzufügen" aufgerufen wird.

Basierend auf all diesen Informationen würde ich vorschlagen, dass Sie eine JCheckBox verwenden möchten, die Sie dann mit JCheckBox#isSelected überprüfen können, ob sie geprüft wurde oder nicht.

Schauen Sie sich genauer an So verwenden Sie die Tasten für weitere Details

2
MadProgrammer

Machen Sie einfach System.out.println(e.getActionCommand()); in actionPerformed(ActionEvent e) function. Dadurch erfahren Sie, welcher Befehl gerade ausgeführt wird.

oder

if(e.getActionCommand().equals("Add")){

   System.out.println("Add button pressed");
}
1
AJ.

Die Methode, die Sie verwenden möchten, prüft, ob die Schaltfläche aktiv ist:

btnAdd.isEnabled()

Wenn aktiviert, ist jede mit diesem Objekt verknüpfte Komponente aktiv und kann die actionPerformed-Methode dieses Objekts auslösen.

Diese Methode prüft nicht, ob die Taste gedrückt ist.

Wenn ich Ihre Frage richtig verstanden habe, möchten Sie die Schaltfläche "Hinzufügen" deaktivieren, nachdem der Benutzer auf "Auschecken" geklickt hat.

Deaktivieren Sie Ihre Schaltfläche beim Start: btnAdd.setEnabled(false) oder nachdem der Benutzer auf "Auschecken" geklickt hat.

0
nillas