2014-07-16 14 views
0

복합체에 레이블을 생성 했으므로 이제는 매 60 초마다 레이블을 변경해야합니다. 그렇게 할 수있는 방법은 무엇입니까? 레이블은 다음과 같습니다.우리는 어떻게 복합체의 특정 시간 후에 레이블을 변경할 수 있습니까?

Label status = new Label(rightCompositeStatusbar, SWT.NONE); 
status.setText("save successful"); 

이제 60 초 후에 레이블 이름을 변경해야합니다. 도와주세요.

답변

0

사용 Display#timerExec(int, Runnable) : 지정된 밀리 초 경과 후

은 실행 가능한의 run() 메소드 원인은 사용자 인터페이스 스레드에 의해 호출된다. 밀리 세컨드가 0보다 작은 경우, 실행 가능 오브젝트는 실행되지 않습니다.

실행 가능 파일이 호출 될 때 수신기가 표시 장치로 설정된 위젯이 삭제되었을 수 있습니다. 따라서 위젯에 액세스하기 전에 실행 파일 내에서이 경우를 확인해야합니다.

public static void main(String[] args) 
{ 
    final Display display = new Display(); 
    Shell shell = new Shell(); 
    shell.setLayout(new FillLayout()); 

    final Label status = new Label(shell, SWT.NONE); 
    status.setText("0"); 

    display.timerExec(100, new Runnable() 
    { 
     int i = 1; 

     @Override 
     public void run() 
     { 
      if(!status.isDisposed()) 
       status.setText(i++ + ""); 

      display.timerExec(100, this); 
     } 
    }); 

    shell.pack(); 
    shell.open(); 

    while (!shell.isDisposed()) 
    { 
     if (!display.readAndDispatch()) 
     { 
      display.sleep(); 
     } 
    } 
    display.dispose(); 
} 
관련 문제