Warum muss meine Methode einen Action -Event aufnehmen, wenn Sie diesen :: methodName mit AddActionListener verwenden?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Warum muss meine Methode einen Action -Event aufnehmen, wenn Sie diesen :: methodName mit AddActionListener verwenden?

by Anonymous » 29 Apr 2025, 10:39

Ich arbeite an einer einfachen Swing -GUI in Java und habe eine Methode addisteners (), bei der ich einen ActionListener an einer Schaltfläche wie folgt anhege: < /p>

Code: Select all

increase.addActionListener(this::increasePoints);

Diese Zeile ist jedoch in meiner IDE rot gekennzeichnet und kompiliert nur, es sei denn, ich ändere die Methode erhöht, um einen Action-Event als Parameter zu akzeptieren:

Code: Select all

    points++;
textField.setText(Integer.toString(points));
}
< /code>
Ursprünglich hatte ich: < /p>
private void increasePoints() {
points++;
textField.setText(Integer.toString(points));
}
< /code>
Meine Frage ist:
Muss es  so geschrieben werden? Gibt es keinen saubereren oder besseren Weg? Warum genau muss ich einen ActionEvent -Parameter hinzufügen, auch wenn ich ihn nicht verwende? < /P>
Eine Klarstellung wäre sehr geschätzt! Ich versuche nicht nur zu verstehen, wie ich es beheben kann, sondern warum dies erforderlich ist.private void addListeners() {
increase.addActionListener(this::increasePoints);

// This version works too:
// increase.addActionListener(new ActionListener() {
//     @Override
//     public void actionPerformed(ActionEvent e) {
//         increasePoints();
//     }
// });

decrease.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
decreasePoints();
}
});
}

private void increasePoints() {
points++;
textField.setText(Integer.toString(points));
}

Top