如何在执行操作之前设置计时器?

时间:2013-05-26 23:41:42

标签: java multithreading

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {      
     char[] pass = pass1.getPassword();  
     String passString = new String(pass);
     String l = "1;"+jTextField1.getText()+"/"+passString+"/"; 

     try{
         a.connection_send(l); 
         \\HEREEE :  I want to wait here 2 secondes before continue and doing a.connection_get() 
         loginInfo = a.connection_get();


         if(Integer.parseInt(loginInfo) == 1) {
            home_page a = new home_page();
            a.setBounds(500, 200, 470, 330); 
         } else { 
            JOptionPane.showMessageDialog(null, "Wrong UserName or Password", "Alert !", JOptionPane.WARNING_MESSAGE);
            jTextField1.setText("");
            pass1.setText("");
         }
     } catch(Exception e) { 
         JOptionPane.showMessageDialog(null, "You Are not connected to Server !\nPlease check Your netowrk ", "Alert !", JOptionPane.WARNING_MESSAGE);
     }
 }

如何在下面的代码中设置一个计时器..我标记了我想放置一个小计时器的地方..任何想法这样做? 我的目标是等待一段时间,直到服务器准备好向我发送数据..所以我可以收到正确的数据!

2 个答案:

答案 0 :(得分:1)

最简单的解决方案是使用Thread.sleep(long milliseconds)方法。如果当前线程由于某种原因被中断,它会抛出InterruptedException。示例用法如下:

try {
  Thread.sleep(2000); //2000 milliseconds = 2 seconds
} catch (InterruptedException e) {
  e.printStackTrace();
}

重要:请注意,Swing线程中的Thread.sleep(int milliseconds)会冻结GUI!您应该将jButton1ActionPerformed()方法ActionPerformed中的所有代码移动到另一个要运行的线程。

感谢@Stony Zhang

答案 1 :(得分:0)

您可以使用insert Thread.sleep(2000),这会导致您的应用程序暂停2,000毫秒(即2秒)。请注意,这必须出现在缓存InterruptedException的try块中,如果另一个线程正在休眠时中断此缓存,则会抛出该块。