Запуск функции в EDT из doInBackground

Я хочу запустить определенную функцию из doInBackground в EDT. В настоящее время я настроил его, используя публикацию и процесс, который работает нормально. Однако я хочу знать, есть ли способ запустить функцию в EDT из doInBackground без использования публикации и обработки. Кроме того, без использования invokeLater. Могу ли я сделать это как-то?


person Graham    schedule 18.10.2011    source источник


Ответы (1)


Вы бы сделали это так же, как поставили бы любой код в очередь в EDT: через Runnable, добавленный в очередь событий:

   protected void doInBackground() throws Exception {

      // code to be called off of the EDT

      SwingUtilities.invokeLater(new Runnable() {
         public void run() {

            // code to be called on the EDT

         }
      });
      return null;
   }
person Hovercraft Full Of Eels    schedule 18.10.2011
comment
Извините, нужно было не указывать invokeLater или публикации и обработки. - person Graham; 18.10.2011
comment
@Graham: что ты имеешь в виду без вызоваLater, поскольку это не имеет смысла. Почему бы вам не использовать invokeLater, поскольку это есть решение, и другого нет? - person Hovercraft Full Of Eels; 18.10.2011
comment
именно это я и хотел узнать. Если есть другое решение, кроме invokeLater или опубликовать и обработать. Если нет, то ответ на мой вопрос. - person Graham; 18.10.2011