почему этот код не работает?

#blackberry #eclipse-plugin

#ежевика #eclipse-плагин

Вопрос:

 accountTab.setChangeListener(new FieldChangeListener() {
   public void fieldChanged(Field field, int context) {
      if (field==TabBar.accountTab)  {
         Dialog.alert(" Account Tab is clicked ");
      }
   }
});
  

почему этот код не работает?
но в некоторых местах это работает. Я закрываю панель вкладок для 9800 torch с помощью Horizontal field manager, а «accountTab» в этом коде является пользовательским полем кнопки. Пожалуйста, помогите мне………

Ответ №1:

Если вы прикрепляете FieldChangeListener к одному полю, вам действительно не нужно проверять, является ли это полем (если вы не делаете что-то очень нестандартное). Я бы попробовал отладку и посмотрел, попадает ли вызов fieldChanged или нет, и если вы хотите использовать там тест, убедитесь, что TabBar.accountTab на самом деле является ссылкой на то, что вы думаете, что это такое.

Другая возможность заключается в том, что вы не настроили вкладку как ФОКУСИРУЕМУЮ, или, возможно, у вас есть что-то дальше по цепочке, перехватывающее щелчки и не позволяющее продолжить работу дальше.

Ответ №2:

Предоставленная информация слишком расплывчата, чтобы точно определить проблему. Однако есть большая вероятность, что это связано с тем фактом, что вы пытаетесь открыть диалоговое окно в ответ на событие, и, возможно, в данный момент у вас не установлена блокировка события. Используйте приложение#invokeLater(), чтобы открыть диалоговое окно. Вам нужно будет реализовать Runnable и создать диалоговое окно.вызов предупреждения из метода run.

Комментарии:

1. Я не знаю ни о каких обработчиках событий, которые выполняются без блокировки события.

Ответ №3:

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