摆动计时器不工作';t在Java Web Start中运行时停止触发事件

摆动计时器不工作';t在Java Web Start中运行时停止触发事件,java,swing,java-web-start,Java,Swing,Java Web Start,我似乎有一个问题,Java Web Start没有正确运行我的应用程序。当我将代码作为应用程序运行时(即,不使用web start),以下代码会导致正在播放的声音停止,动画停止 if (evt.getSource() == stopButton) { if (clipPlayer != null) { //Stop the sound from playing clipPlayer.stopPlaying(); } for (

我似乎有一个问题,Java Web Start没有正确运行我的应用程序。当我将代码作为应用程序运行时(即,不使用web start),以下代码会导致正在播放的声音停止,动画停止

if (evt.getSource() == stopButton)
{   
    if (clipPlayer != null)
    {
        //Stop the sound from playing
        clipPlayer.stopPlaying();
    }
    for (int i = 0; i < rhythmWheel.NUM_WHEELS; i++)
    {
        rhythmWheel.getWheelPanels()[i].wheel.setRotationAngle(0);
    }
    //Stop the wheel from rotating.
    paintTimer.stop();
}
if(evt.getSource()==stopButton)
{   
if(clipPlayer!=null)
{
//停止播放声音
clipPlayer.stopPlaying();
}
对于(int i=0;i
但是,当通过web start运行此代码时,声音停止播放,但动画继续。我认为这是由于计时器继续触发事件造成的,因为从计时器中删除actionListener会导致动画停止,即使在web start中也是如此


在Java Web Start中运行时,如何强制应用程序使计时器停止触发事件?

我相信您的代码中存在未捕获的异常

首先,学习如何使用javaws手动调用JNLP文件,以便查看打印到控制台的内容。例如,
javaws-foo.jnlp

如果这还不够,那么添加print语句(如果使用日志记录,则添加log语句),这样您就可以看到最终语句已经到达

试一试

if(evt.getSource()==stopButton)
{   
if(clipPlayer!=null)
{
//停止播放声音
clipPlayer.stopPlaying();
}
System.out.println(“停止铺设后().rhythmWheel.NUM_WHEELS=“+rhythmWheel.NUM_WHEELS”);
对于(int i=0;i

如果看到“stop()调用”,计时器应该停止。

我相信您的代码中有一个未捕获的异常

首先,学习如何使用javaws手动调用JNLP文件,以便查看打印到控制台的内容。例如,
javaws-foo.jnlp

如果这还不够,那么添加print语句(如果使用日志记录,则添加log语句),这样您就可以看到最终语句已经到达

试一试

if(evt.getSource()==stopButton)
{   
if(clipPlayer!=null)
{
//停止播放声音
clipPlayer.stopPlaying();
}
System.out.println(“停止铺设后().rhythmWheel.NUM_WHEELS=“+rhythmWheel.NUM_WHEELS”);
对于(int i=0;i
如果看到“stop()调用”,计时器应该停止

我想知道为什么在JavaWebStart下运行时,程序中会出现这个错误

验证您是否正在上构建GUI。这对于Swing小程序也是必需的。可能正在改变时间,足以暴露问题

我想知道为什么在JavaWebStart下运行时,程序中会出现这个错误


验证您是否正在上构建GUI。这对于Swing小程序也是必需的。可能正在更改时间以暴露问题。

感谢您告诉我如何使用javaws运行jnlp文件。以后可能会有用。然而,目前java提供了一个新的vm来运行小程序,我在终端上看不到输出。但是,我启用了java控制台,并且一直在检查那里是否存在异常。我尝试了您的建议,但我可以确认没有未捕获的异常。我看到java控制台中打印了“stop()called”消息,但动画没有停止。有趣。你能创建一个非常小的程序来显示同样的行为吗?我试图找到复制问题的代码子集。遗憾的是,这是我继承的代码,所有东西都是非常紧密地耦合在一起的。感谢您告诉我如何使用javaws运行jnlp文件。以后可能会有用。然而,目前java提供了一个新的vm来运行小程序,我在终端上看不到输出。但是,我启用了java控制台,并且一直在检查那里是否存在异常。我尝试了您的建议,但我可以确认没有未捕获的异常。我看到java控制台中打印了“stop()called”消息,但动画没有停止。有趣。你能创建一个非常小的程序来显示同样的行为吗?我试图找到复制问题的代码子集。可悲的是,这是我继承的代码,所有东西都非常紧密地结合在一起。我怀疑你的程序有一个bug,但它在代码的另一部分,在这里没有显示的代码中。虽然我确定程序可能有bug,但我想知道为什么在Java Web Start下运行时,程序中会出现这个bug,当作为应用程序运行时就不会了。我也不能解释它,但我建议您使用调试语句并尝试缩减代码,尝试简化程序,直到隔离问题为止。webstart的演示可以正常工作。因此,您的代码中可能存在版本/平台问题或逻辑问题。我怀疑您的程序有缺陷,但它存在于代码的另一部分,在这里未显示的代码中。虽然我确定该程序可能有缺陷,但我想知道在Java Web Start下运行时,为什么会在程序中出现此缺陷,当作为应用程序运行时就不会了。我也不能解释它,但我建议您使用调试语句并尝试缩减代码,尝试简化程序,直到隔离问题为止。webstart的演示可以正常工作。所以你要么有一个
if (evt.getSource() == stopButton)
{   
    if (clipPlayer != null)
    {
        //Stop the sound from playing
        clipPlayer.stopPlaying();
    }
    System.out.println("after stopPlaying(). rhythmWheel.NUM_WHEELS=" + rhythmWheel.NUM_WHEELS);
    for (int i = 0; i < rhythmWheel.NUM_WHEELS; i++)
    {
        rhythmWheel.getWheelPanels()[i].wheel.setRotationAngle(0);
       System.out.println("set " + i + " to 0");
    }
    //Stop the wheel from rotating.
    paintTimer.stop();
    System.out.println("stop() called");
}