2016-10-29 25 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