java - 反正有一个 for 循环在后台运行,另一个任务在前面吗?
问题描述
我有一个不断向下滚动的背景图像,但我在它上面放置了一个菜单,需要一个 keylistner 和音乐。但是我似乎无法让 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循环中运行背景图像,并且在按下向下箭头时标题屏幕会改变,但是它只运行背景循环
解决方案
你的程序现在只有一个线程。因此,它不能同时做两件事。但是,好消息是您可以对程序进行多线程处理,以便它一次执行多项操作。
我在这里回答了一个与此类似的问题:在 Eclipse 上按“运行”时遇到问题(同时)启动游戏和音乐。
您可以将背景循环放在一个类中并实现Runnable
. 这将允许您在后台运行该 for 循环。上面的链接显示了如何修改代码以将您的程序从单线程移动到多线程。
推荐阅读
- python - 用字典的值替换 DataFrame 的值
- ios - 是否可以在 SwiftUI 中使用 UIKit 扩展?
- powershell - 如果属性名称是整数,为什么我不能点引用哈希表键的值属性
- python - Python - 不确定我是通过 FTP 还是 SFTP 连接到服务器
- firebase - 我在尝试 this.in 时遇到此错误。以前的版本我用这种方式构建它,但我现在不能。颤振快照映射
- eclipse - .pack 文件的 Eclipse 问题
- javascript - v-for 循环一次选择多个项目并在选择索引时更改图像
- php - 复制教程代码后,PHP 表单验证不起作用
- c++ - 有没有办法将分配的对象实际移动到 std::list
- php - 分页链接不显示所有页面