Темы в замораживании качания - java [дубликат]

Вы можете использовать Javascript для достижения этого. Попробуйте следующий код:

HTML

<select id="myDropdown">      
    <option>Option 1</option>     
    <option>Option 2</option>     
    <option>Option 3</option>     
</select> 

JS

document.getElementById("myDropdown").selectedIndex = -1;

или JQuery

$("#myDropdown").prop("selectedIndex", -1);
4
задан jjnguy 18 November 2010 в 17:44
поделиться

3 ответа

Вы правы в том, что код помещает пользовательский интерфейс в режим сна. Поскольку sleep вызывается в Thread Dispatch Thread (поток, ответственный за запуск gui), пользовательский интерфейс останавливает обработку событий и «переходит в режим сна».

Я думаю, что вы хотите javax.swing.Timer .

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

Это приведет к тому, что ваша повторная задача будет выполнена вне EDT, и, следовательно, она не оставит ваш ui невосприимчивым.

4
ответ дан jjnguy 19 August 2018 в 17:35
поделиться
  • 1
    & quot; Обратите внимание, что задача таймера Swing выполняется в потоке отправки событий. Это означает, что задача может безопасно манипулировать компонентами, но это также означает, что задача должна выполняться быстро. & Quot; download.oracle.com/javase/tutorial/uiswing/misc/timer.html – unholysampler 18 November 2010 в 15:59
1
ответ дан aioobe 19 August 2018 в 17:35
поделиться

Это связано с тем, что вы запускаете проверку в основном графическом потоке и используете бесконечный цикл. Эта проверка является фоновой задачей и должна выполняться в ее собственном потоке, чтобы графический интерфейс мог получать и реагировать на ввод пользователем.

Вам также не нужно писать свою собственную реализацию, Java имеет Объект Timer .

Редактирование: существует также специальный объект Timer для Swing. Это будет происходить в потоке графического интерфейса, поэтому, если ваша задача длинная, это может привести к тому, что графический интерфейс все еще будет заблокирован во время действия (но не в ожидании).

1
ответ дан unholysampler 19 August 2018 в 17:35
поделиться
  • 1
    Таймер, на который вы ссылаетесь, является таковым из пакета util. При взаимодействии с компонентами качания вы должны использовать качели Timer. – jjnguy 18 November 2010 в 15:53
Другие вопросы по тегам:

Похожие вопросы: