Я пытаюсь сделать смешной JFrame
так, когда мышь покидает окно, она меняет цвет панели Background
некоторых случайных цветов (чтобы привлечь внимание пользователя):Изменение компонентов Цвет фона динамически с ожиданием()
wnd.addMouseListener(new MouseAdapter(){
@Override
public synchronized void mouseExited(MouseEvent e){
cond = true;
while(cond){
try{
wnd.getContentPane().setBackground(Color.getHSBColor((cont+=0.05), 1, 1));
wnd.setTitle("Num: "+cont);
wnd.getContentPane().repaint(); //With or without it doesn't work either
wait(100);
}
catch(InterruptedException ex){ Thread.currentThread().interrupt(); }
}
}
});
Проблема в том, что цвет Background
не меняется ... Он показывает мне значения cont в заголовке окна, но цвет не изменяется. Если я удаляю цикл и просто перемещаю мышь внутри и снаружи панели, он меняется ... Но я хочу сделать так, что, когда мышь покидает окно, он автоматически меняет цвета, пока мышь не вернется к нему. Какой-то эпилепсия (?)
Я не знаю, почему, если я его зациклирую и сделаю задержку с wait()
, это не сработает.
Вы блокирующих событие Диспетчерская тему, препятствуя не удалось обновить пользовательский интерфейс. – MadProgrammer
Вы прочитали документацию для 'wait()'? Вероятно, это не то, что вы хотите использовать. –