2016-10-29 1 views
0

これは私にとってずっと簡単だと思ったが、私はそのコンセプトを忘れている。一言で言えば、私はオーディオを消すための方法を作り、forループで '待つ'ためにThread.Sleepを使いました。そのメソッドを呼び出す前に、いくつかのラベルとテキストフィールドを表示しないように設定しましたが、スレッドがスリープして変更するまで待っていました。私はdo-whileループでラベルをラップして強制し、その後に再描画を呼び出そうとしましたが、何も修正しませんでした。何かアドバイスをいただければ幸いです。GUIを先に再描画する.Sleep

編集を含めるのactionPerformedする:

以下
  public void actionPerformed(ActionEvent e) 
    { 
     if(e.getSource() == quit) 
     { 
      System.exit(0); 
     } 
     else if(e.getSource() == play) 
     { 
      System.out.println("PLAY"); 
      quit.setVisible(false); 
      quit.setEnabled(false); 
      play.setVisible(false); 
      play.setEnabled(false); 
      GameActivated(); 
     } 
     else if(e.getSource() == submitTeams) 
     { 
      teamOneName = teamOneTF.getText(); 
      teamTwoName = teamTwoTF.getText(); 

      Swinpublic void actionPerformed(ActionEvent e) 
    { 
     if(e.getSource() == quit) 
     { 
      System.exit(0); 
     } 
     else if(e.getSource() == play) 
     { 
      System.out.println("PLAY"); 
      quit.setVisible(false); 
      quit.setEnabled(false); 
      play.setVisible(false); 
      play.setEnabled(false); 
      GameActivated(); 
     } 
     else if(e.getSource() == submitTeams) 
     { 
      teamOneName = teamOneTF.getText(); 
      teamTwoName = teamTwoTF.getText(); 

      SwingUtilities.invokeLater(new Runnable(){ 
       public void run(){ 
           teamOneLabel.setVisible(false); 
           teamOneTF.setVisible(false); 
           teamTwoLabel.setVisible(false); 
           teamTwoTF.setVisible(false); 
           submitTeams.setVisible(false); 
       } 
       }); 

     } 
     else 
      System.out.println("Error: Button pressed with no known source."); 
    } 

が呼び出されているAudioHandler1の内部です:

  for(int count = 0; count < 71; count++) 
     { 
      gainControl.setValue((float) count*-1); 
      System.out.println("Waiting!" + Math.random()); 
      try 
       { 
       Thread.sleep(50); 
       } 
      catch(InterruptedException ex) 
       { 
        Thread.currentThread().interrupt(); 
       } 

     } 

答えて

1

あなたはここにEDTをブロックしています。 AudioHandler1

 new SwingWorker<Void,Void>() 
     { 
     @Override 
     protected Void doInBackground() throws Exception 
      { 
      AudioHandler1("Theme.wav",false,true); 
      return null; 
      } 
     }.execute(); 
+0

をinvokleするSwingWorkerを使用して、私はちょうどSwingUtilitiesはラベルがfalseに設定場合について、のActionEventの内側に上書きSwingWorkerのを入れてみましたが、私は、エラーをキャッチしています。例を教えてください。 –

+0

投稿した内容を見たい場合は、投稿を編集することもできます。 –

+0

@MarshalAlessiどのようなエラーが発生しますか – Antoniossss

関連する問題