Есть ли в любом случае цикл for в фоновом режиме и еще одна задача на передней панели? - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть фоновое изображение, которое постоянно прокручивается вниз, но я помещаю меню поверх него, и мне нужен клавишник и музыка поверх него.Однако я не могу заставить запускать список ключей.Я предполагаю, что это связано с циклом for, который сбрасывает себя непосредственно перед тем, как достигнет своего конца.

//Backloop is called before keyPressed in the main class
public void keyPressed(KeyEvent VK_DOWN) {
    down();
}
public void backloop() throws InterruptedException {
    for(int x = 1; x > -4320; x--) {
        if(x == -4000)
        {
            x = 0;
            rolling.setLocation(0, x);
        }else {
            rolling.setLocation(0, x);
            Thread.sleep(50);
        }

    }
}

public void down() {
    if(title = false)
    {
        panel.remove(title1);
        panel.add(title2);
        title = true;
    }else {
        panel.remove(title2);
        panel.add(title1);
        title = false;
    }
}

Я ожидаю, что на выходе будет фоновое изображение в цикле for, а экран заголовка изменится при нажатии стрелки вниз, однако он только запускает фоновый цикл

1 Ответ

0 голосов
/ 05 апреля 2019

Ваша программа имеет один поток прямо сейчас. Таким образом, он не может делать две вещи одновременно. Тем не менее, хорошая новость заключается в том, что вы можете использовать многопоточность своей программы, чтобы она могла выполнять несколько задач одновременно.

Я ответил на вопрос, похожий на этот, здесь: Проблемы с запуском игры и музыки (одновременно) при нажатии 'run' на Eclipse .

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

...