Page 1 of 1

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

Posted: 29 Apr 2025, 10:39
by Anonymous
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));
}