如何设置一行代码运行一次?

时间:2015-06-02 18:03:49

标签: java netbeans

当我的表单打开时,它会运行一首歌曲。当我进入我的选项框架并返回到我的主框架时,它会重新运行代码。现在我做了一个while循环并且工作,除了事情之外我应该在哪里声明初始值?如果我在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;
}
} 

1 个答案:

答案 0 :(得分:2)

InputStream和AudioStream应该是某个对象的实例变量。如果它们驻留在函数openedWindow中,则在函数运行完毕后它们将成为垃圾收集器。

相反,您应该在需要访问它们的类中实例化它们,可能在构造函数方法中。

另外,将声音变量也设为类的实例变量。这样,每次调用openedWindow时都不会重置。

或者使用布尔标志变量来指示声音是否已播放:

class MyWindowListener implements WindowListener {
    boolean soundPlayed = false;
    ...
    public void windowOpened(WindowEvent e) {
        if (!soundPlayed) {
            // play the sound
            soundPlayed = true;
        }
    }
}