我用freeTTS说出一些文字,在后台我想要一个动画的gif继续播放当我尝试这个:一旦声音开始说话,背景中的图像就会被挂起来,即使我把它保存在其他JFrame中.演讲结束后,它开始移动。我要它在没有停顿的情况下正常运行。通过将动画gif导入到我的应用程序中并在label‘属性中将图标更改为该图像,我将在标签中放置一个动画gif。
编辑这里是我的代码:
private void RandomjBActionPerformed(java.awt.event.ActionEvent evt) {
Voice voice;
voice = voiceManager.getVoice(VOICENAME);
voice.allocate();
voice.speak("Daksh");
} 实际上,我使用了大量的setVisible、setText、整数声明、对它们进行计算,但我已经删除了它们,以简化代码以供您理解。不过,如果执行的话,也会出现同样的问题。
按钮“RandomjB”是通过以下代码从另一个按钮单击的:
final Timer timer = new Timer(zad, new ActionListener() {
int tick = 0;
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Success" + ++tick);
RandomjB.doClick();
final int col = Integer.parseInt(t3.getText());;
if (tick >= col) {
((Timer) e.getSource()).stop();
for(int g=0; g<col; g++){
jButton2.setVisible(true); // Check Button -> Visible
}
}
}
});
timer.setInitialDelay(0);
System.out.format("About to schedule task.%n");
timer.start();
System.out.format("Task scheduled.%n");发布于 2013-10-05 18:34:59
你可能想研究一下线程和并发
这允许两件事同时进行,这只是我的假设。
假设您为FreeTTS实例化了某种类,那么您可能需要这样做
FreeTTSClass tts;
new Thread(new Runnable(){
public void run(){
tts = new FreeTTSClass();
}
}).start();发布于 2013-10-05 18:38:13
如果没有代码,很难判断,但是,我假设您在唯一的Swing线程中循环语音合成,因此,只要语音循环正在进行,就会阻止所有类型的窗口更新。
正如肖恩·怀尔德所说:你需要在语音循环中使用第二个线程。
https://stackoverflow.com/questions/19201264
复制相似问题