«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему мой пользовательский интерфейс Swing зависает при использовании Thread.sleep() с JFileChooser?

Почему мой пользовательский интерфейс Swing зависает при использовании Thread.sleep() с JFileChooser?

Опубликовано 9 ноября 2024 г.
Просматривать:870

Why does my Swing UI freeze when using `Thread.sleep()` with `JFileChooser`?

Пользовательский интерфейс Swing останавливается с помощью Thread.sleep()

Ваш запрос предполагает, что использование Thread.sleep() в сочетании с JFileChooser приводит к Приостановка пользовательского интерфейса, запрещающая отображение элементов Swing. Причина такого поведения заключается в том, что Thread.sleep() вызывается в потоке диспетчеризации событий (EDT), который отвечает за управление графическим интерфейсом. Следовательно, пользовательский интерфейс переходит в состояние сна, в результате чего он перестает отвечать на запросы.

Чтобы решить эту проблему, вместо этого рекомендуется использовать javax.swing.Timer. Вот как это работает:

Timer t = new Timer(1000 * 5, new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // Perform your recurring task
    }
});

Благодаря использованию таймера ваша периодическая задача выполняется вне EDT, гарантируя, что пользовательский интерфейс остается отзывчивым, пока ваша задача выполняется параллельно.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3