2013-05-26 5 views
0
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); 
    } 
} 

어떻게 아래의 코드에서 타이머를 설정할 수 있습니까? 나는 작은 타이머를 배치 할 위치를 표시했습니다. 그럴 생각이 있습니까? 내 목표는 서버가 데이터를 보낼 준비가 될 때까지 조금 기다리는 것입니다. 그래서 적절한 데이터를받을 수 있습니다!조치를 취하기 전에 타이머를 설정하는 방법은 무엇입니까?

+0

왜 임의 대기를 삽입해야합니까? 나는 당신의'connection_get' 메쏘드가 서버가 데이터를 보낼 때까지 블록 될 것이라고 생각했을 것이다. – SimonC

답변

1

가장 간단한 해결책은 Thread.sleep(long milliseconds) 방법을 사용하는 것입니다. 어떤 이유로 든 현재 스레드가 인터럽트되면 InterruptedException을 던집니다. 다음과 같이 샘플 사용법은 다음과 같습니다

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

중요 : 스윙 스레드에서 Thread.sleep(int milliseconds)는 GUI를 동결 할 것이라는 점을주의! 다른 스레드로 ActionPerformed 메서드의 모든 코드를 실행하여 실행해야합니다. @Stony 장에

덕분에

+1

그것은 사용자의 문제를 해결할 수 있지만 스윙 스레드에서 수면, GUI가 동결됩니다! 우리는 ActionPerformed의 모든 코드를 다른 스레드로 옮겨서 실행해야합니다. – Stony

+0

추가해 주셔서 감사합니다. :) –

+0

나는 대답을 업데이트했다. –

0

당신은 2,000 밀리 초 (즉, 이초)에 대한 일시 중지 응용 프로그램을 원인 삽입 Thread.sleep(2000)를 사용할 수 있습니다. 이 스레드는 InterruptedException을 캐시하는 try 블록에 나타나야하며, 다른 스레드가 잠자기 중에이 스레드를 인터럽트하면 throw됩니다.

관련 문제