1

私は freeTTS を使用してテキストを読み上げていますが、バックグラウンドでアニメーション GIF を再生し続けたいと思っています。 ..そしてスピーチが終わった後、それは動き始めます。途切れることなくちゃんと走ってほしい。アプリケーションにインポートし、ラベルのプロパティでアイコンをその画像に変更することにより、アニメーション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");
4

2 に答える 2

0

コードなしではわかりにくいですが、唯一の Swing-Thread 内で音声合成をループし、音声ループが進行している限り、あらゆる種類のウィンドウ更新をブロックすると仮定します。

Shaun Wild が述べたように: 音声ループには 2 番目のスレッドを使用する必要があります。

于 2013-10-05T18:38:13.157 に答える