Метод addActionListener () в классе AbstractButton
принимает один параметр, а именно экземпляр класса, который реализует интерфейс ActionListener . Класс JButton
расширяет AbstractButton
и поэтому наследует этот метод.
Теперь рассмотрим класс MouseAdapter . Вы увидите, что он не реализует интерфейс ActionListener
и поэтому не подходит в качестве параметра для метода addActionListener()
.
Для требований, описанных в вашем вопросе, я рекомендую создать собственная реализация интерфейса ActionListener
. Следующее похоже на код, который вы опубликовали, и использует анонимный внутренний класс для реализации интерфейса ActionListener
:
ClickSpeedTest.addActionListener(new ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent event) {
System.out.println("It works!!");
}
});
Обратите внимание, что вышеуказанный метод actionPerformed()
будет вызываться при каждом нажатии кнопки ClickSpeedTest
будь то с помощью мыши или клавиатуры или даже с помощью java кода. (См. Метод doClick () в классе AbstractButton
.)
Если вы используете Java 8 или выше, тогда ActionListener
- это функциональный интерфейс , то есть интерфейс, который содержит точно один абстрактный метод, и, следовательно, вы можете реализовать его, используя лямбда-выражение , что означает, что вы также можете использовать следующий код:
ClickSpeedTest.addActionListener(e -> System.out.println("It works!!"));