2016-10-29 58 views
0

我認爲這對我來說會簡單很多,但我錯過了這個概念。簡而言之,我提出了一種淡化音頻的方法,並使用Thread.Sleep讓它在for循環中「等待」。在調用該方法之前,我將幾個標籤和文本字段設置爲不可見,但它們一直等到線程休眠改變之後。我試圖將標籤封裝在一個do-while循環中強制它們,甚至試圖在它之後調用重繪,但它沒有解決任何問題。任何意見,將不勝感激:Redraw GUI Prior Thread.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。使用SwingWorker到invokle AudioHandler1

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

我試圖把覆蓋的SwingWorker的ActionEvent的內部,略低於其中SwingUtilities的設置標籤假的,但我趕上了錯誤。你能舉個例子嗎? –

+0

我也可以編輯我的帖子頂部,如果你只想看看我輸入什麼。 –

+0

@MarshalAlessi什麼樣的錯誤 – Antoniossss