Я создал JDialog
, который я хочу переместить и изменить размер. Моя программа рисует на экране JDialog
. Когда пользователь нажимает на него, он должен растягиваться до ширины экрана, а затем увеличивать высоту. Я попробовал это так.Анимация JDialog
for(int i = 150; i <= width; i += 3) {
dialog.setSize(i, 80);
try {
Thread.sleep(0, 1);
} catch(Exception e2) {}
}
for(int i = 80; i <= 200; i++) {
dialog.setSize(width, i);
try {
Thread.sleep(1);
} catch(Exception e3) {}
}
Когда код будет выполнен, потребуется некоторое время, а затем JDialog будет показан растянутым. Не отображается расширение.
Ну, когда пользователь снова нажимает на диалог, он отменит открытие анимации и закроется.
for(int i = 200; i >= 80; i--) {
newMsg.setSize(width, i);
try {
Thread.sleep(0, 1);
} catch(Exception e4) {}
}
for(int i = 0; i >= -width; i -= 3) {
newMsg.setLocation(i, 100);
try {
Thread.sleep(0, 1);
} catch(Exception e5) {}
}
Этот продукт работает правильно. Движение можно увидеть. Насколько я понимаю, эти коды идентичны, за исключением того, что они меняются на противоположные. Почему открытие не работает, как ожидается, но закрытие?
Попробуйте с помощью качающийся таймер, а не цикл. Я думаю, что события просто застревают в очереди событий, а затем все выполняются сразу. – DankMemes
Хотелось бы посмотреть, как вы это сделаете. Я прокомментировал сообщение Reimeus и объяснил ... – MikkoP
Возможный дубликат [использование sleep() для одной темы] (http://stackoverflow.com/questions/14074329/using-sleep-for-a-single-thread) –