反正有没有在后台运行for循环和前面的另一个任务?

问题描述 投票:0回答:1

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

java for-loop keylistener
1个回答
0
投票

你的程序现在有一个主题。因此,它不能同时做两件事。但是,好消息是,您可以对程序进行多线程处理,以便它可以同时执行多项操作。

我在这里回答了一个类似的问题:Trouble launching game and music (at the same time) when pressing 'run' on Eclipse

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

© www.soinside.com 2019 - 2024. All rights reserved.