Проблема при "открытии" JFrame - PullRequest
0 голосов
/ 04 января 2019

У меня есть эффект для моего JFrame, что когда он запускается, он медленно сдвигает рамку, а когда она заканчивается, он медленно сдвигает ее.Вот видео об этом (извините, запись идет на низкой частоте кадров): https://www.dropbox.com/s/v19xtnxc6utt9y3/2019-01-03%2022-17-26.mp4?dl=0
Обратите внимание, как он нормально закрывается, но при открытии он попадает в первые несколько пикселей, затем зависает и затем открывается полностью.

Это мой код, используемый для открытия:

    while (frame.getWidth() < MAX_FRAME_WIDTH) {
        frame.setSize(frame.getWidth() + 2, frame.getHeight());
    }

И это код, используемый для закрытия:

    while (frame.getWidth() > 0) {
        frame.setSize(frame.getWidth() - 2, frame.getHeight());
    }

Если кто-то может показать мне, почему эта проблеманастоящее и как это исправить было бы замечательно.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Использовать Таймер в поле:

private final Timer timer;

И увидеть эффект следующим образом:

frame.pack();
frame.setVisible(true);
frame.setSize(0, getHeight());
timer = new Timer(5, open());
timer.start();

Где open() определяется как:

private ActionListener open() {

    return e ->{

        setSize(frame.getWidth() + 2, frame.getHeight());
        if(frame.getWidth() >= MAX_FRAME_WIDTH) {
            timer.stop();
        }
    };
}
0 голосов
/ 04 января 2019

Хорошо, я только что сыграл arround и обнаружил, что добавление Thread.sleep (1);

решает проблему.Я предполагаю, что это изменило размер кадра быстрее, чем качели могли обновить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...