Java 如何使一行代码运行一次?
当我的表单打开时,它运行一首歌。当我进入选项框并返回主框时,它会重新运行代码。现在我做了一个while循环并运行,但问题是我应该在哪里声明初始值?如果我在Java 如何使一行代码运行一次?,java,netbeans,Java,Netbeans,当我的表单打开时,它运行一首歌。当我进入选项框并返回主框时,它会重新运行代码。现在我做了一个while循环并运行,但问题是我应该在哪里声明初始值?如果我在windowOpened上声明,它总是重置为0,因此总是再次执行循环 openedWindow事件中的我的代码 int sound = 0; while (sound < 1) { try { InputStream test = getClass().getClassLoader()
windowOpened
上声明,它总是重置为0,因此总是再次执行循环
openedWindow
事件中的我的代码
int sound = 0;
while (sound < 1) {
try
{
InputStream test = getClass().getClassLoader().getResourceAsStream("musics/menu.wav");
AudioStream Audio = new AudioStream(test);
AudioPlayer.player.start(Audio);
}
catch (Exception e){}
sound = sound + 1;
}
}
int-sound=0;
while(声音<1){
尝试
{
InputStream测试=getClass().getClassLoader().getResourceAsStream(“music/menu.wav”);
AudioStream Audio=新的AudioStream(测试);
AudioPlayer.player.start(音频);
}
捕获(例外e){}
声音=声音+1;
}
}
InputStream和AudioStream应该是某个对象的实例变量。如果它们驻留在函数openedWindow
中,则在函数完成运行后,它们将成为垃圾收集器
相反,您应该在需要访问它们的类中实例化它们,可能是在构造函数方法中
另外,使声音变量也成为类的实例变量。这样,它就不会在每次调用openedWindow
时重置
或者使用布尔标志变量指示是否播放了声音:
class MyWindowListener implements WindowListener {
boolean soundPlayed = false;
...
public void windowOpened(WindowEvent e) {
if (!soundPlayed) {
// play the sound
soundPlayed = true;
}
}
}
不一定,但这与OP的问题无关,所以为什么要将其作为答案发布?声音变量也应该是类的实例变量。我想这会解决他的问题。詹姆斯,while循环是一个无限循环,它会创建新的实例并重新启动音乐,不管你是在里面还是外面实例化它们。@Stultuske while循环只运行一次,所以它毫无意义。while(true)。。。