gpt4 book ai didi

java - 在 Java Web Start 中运行时,Swing Timer 不会停止触发事件

转载 作者:行者123 更新时间:2023-11-29 03:54:46 25 4
gpt4 key购买 nike

我似乎遇到了 Java Web Start 无法正确运行我的应用程序的问题。当我将代码作为应用程序运行时(即没有 Web 启动),以下代码会导致正在播放的声音停止,并停止动画。

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();
}

但是,当通过 web start 运行此代码时,声音停止播放,但动画继续播放。我相信这是由 Timer 继续触发事件引起的,因为从 Timer 中删除 actionListener 会导致即使在 Web 启动时动画也会停止。

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

最佳答案

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

首先,学习使用 javaws 手动调用 JNLP 文件,这样您就可以看到打印到控制台的内容。例如。 javaws foo.jnlp.

如果这还不够,则添加打印语句(如果您使用日志记录,则添加日志语句)以便您可以看到最终语句实际上已到达。

尝试

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");
}

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

关于java - 在 Java Web Start 中运行时,Swing Timer 不会停止触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6992623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com