无论如何,是否可以在后台运行一个 for 循环,在前面运行另一个任务



我有一个不断向下滚动的背景图像,但我在上面放置了一个菜单,需要在其上放置一个键列表和音乐。但是,我似乎无法启动密钥侦听器。我的假设是这是由于 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 循环中运行背景图像,并在按下向下箭头时更改标题屏幕,但它只运行背景循环

您的程序现在有一个线程。因此,它不能一次做两件事。但是,好消息是您可以多线程程序,以便它一次执行多项操作。

我在这里回答了一个与此类似的问题:在 Eclipse 上按"运行"时(同时(启动游戏和音乐时遇到问题。

您可以将后台循环放在类中并实现Runnable .这将允许您在后台运行该 for 循环。上面的链接显示了如何修改代码以将程序从单线程移动到多线程。

最新更新