Обработка событий в Java: требуются ли пустые обработчики событий - PullRequest
1 голос
/ 21 января 2010

Я отказался от GUI Builders для Java и теперь полностью разрабатываю их в коде (не очень сложно, с парой часов практики). Сейчас я занимаюсь обработкой событий.

Но я обнаружил, что когда я пытаюсь использовать класс для реализации типа слушателя, например,

private class TextAction implements FocusListener
{
   public void focusGained(FocusEvent e)
   {
       responseTxt.setText("Got focus");
   }

   public void focusLost(FocusEvent e)
   {

   }

}

Я должен предоставить пустой обработчик действий (как указано выше) для focusLost, даже если он мне не нужен, или я получаю настойчивую диаграмму из редактора, говорящую, что это не абстрактный класс и не переопределяет метод FocusLost и т. Д. .

Означает ли это, что обработчики действий должны показывать обработчик действий для каждого типа события, связанного с прослушивателем, даже если действие не будет использоваться в программе?

Спасибо за любую помощь в этом.

Ответы [ 2 ]

4 голосов
/ 21 января 2010

В JDK уже есть базовые классы для всех стандартных интерфейсов Listener. Эти классы реализуют все методы интерфейса, но ничего не делают в теле методов. Вы получите их, просто изменив имя интерфейса с XyzListener на XyzAdapter.

С этими адаптерами вам нужно только переопределить методы, которые вам действительно нужны:

private class TextAction extends FocusAdapter
{
   @Override
   public void focusGained(FocusEvent e) 
   { 
       responseTxt.setText("Got focus"); 
   } 
}
2 голосов
/ 21 января 2010

Система "событий" в Java в основном взломана.

Нет ничего особенного в задействованных интерфейсах - как и во всех интерфейсах, вам необходимо реализовать все их методы.

Если вы хотите реализовать только некоторые из них, вы можете наследовать от связанного с ним класса Adapter, который обеспечивает реализации по умолчанию бездействия для всего, что вы решите не переопределять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...