2014-04-09 3 views
1

JFRAME에 버튼과 라벨이 있습니다. 버튼을 클릭하면 Linux 서버에 연결하려고 시도하는데 몇 초가 걸립니다. 레이블 텍스트 Connecting .. 및 Connected를 설정하려고합니다. 그러나 이것은 버튼 조작 실행 중 레이블 텍스트 Connecting ...을 설정하지 않습니다. 모든 아이디어 수행 방법버튼 클릭 액션 실행 중 라벨 텍스트 업데이트 (Java)

private void buttonLConnectActionPerformed(java.awt.event.ActionEvent evt) { 
    labelLOut.setText("Connecting"); 
    String ip=""; 
    String userid="username"; 
    String password="password"; 
Main_Window.LBoxconnect=new SshConnection(ip,userid,password); 
    int x=LBoxconnect.checkConnection(); 
    if(x==1){ 
    labelLOut.setText("Connected"); 
    if(dx==1) 
     buttonBTTInsert.setEnabled(true); 
    else 
     lx=1; 
    } 
    else 
    labelLOut.setText("Connection Failed"); 
} 

답변

0

버튼 리스너가 아닌 백그라운드 스레드에서 긴 동작을 수행해야합니다. 그렇지 않으면 UI가 정지 된 것처럼 보일 것입니다.

청취자에게 텍스트를 "연결 중"으로 설정 한 다음 연결 항목을 감싸는 스레드를 실행하십시오. 실행 가능 파일의 끝에서 긴 조작이 완료되면 텍스트를 다시 갱신하십시오.

+1

답변은 스윙 워커를 사용하여 예제를 보여줍니다. http://stackoverflow.com/questions/8916221/jlabel-will-not-update-unless-something-causes-the-method-to-hang –

+0

@ Moh-Aw +1 설명과 좋은 링크 – Joffrey

+0

고마워, 나는 제안 된 것을 따라하려고 노력하고있어. – cks