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

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

Post 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));
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post