Вопрос

Я не разработчик Java, но мне нужно написать небольшой апплет для загрузки файла через FTP (на самом деле, я веб-разработчик). Все работает нормально, за исключением того, как отображаются сообщения о обратной связи. Позвольте мне объяснить с примером:

Если я написал некоторое время, как это, внутри метода (контролируется событием клики)

//....
myJpanel.setText("Connecting to remote server");

//actually, it's surrounded by try-catch statement
myFtpObject.connect(); //this is taken from a third part package 
myJpanel.setText("Connected")

Когда я пытаюсь запустить этот код, подключение установлено (после этого подключения я зарабатываю файлы без проблем), но внутри JPanel myjpanel. Я сразу читал «подключен» (ALTULT, требуется несколько секунд для подключения), и я никогда не вижу строку «подключения к удаленному серверу».

Звучит мне, как метод jpanel Settext в некотором роде буфет.
Как я могу отображать сообщения в режиме реального времени?

(Я пытался сделать System.out.Println для тестирования, и он отлично работал!)
Спасибо

Это было полезно?

Решение

Если я написал некоторое время, как это внутри метода (контролируется событием клики)

Код выполнен в слушатель события, выполняет на EDT. Проблема в том, что длительная рабочая задача блокирует EDT Swing. Таким образом, GUI никогда не получает шанс перекрасить себя.

Прочитайте раздел из учебного пособия на качелях на Параллельность Для получения дополнительной информации и для решения. Основное решение состоит в том, чтобы создать отдельный поток для длительной задачи.

Это также почему System.out.Println (..) работает, потому что он выполняется в другой поток.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top