В одном диалоговом окне SWT я собираюсь добавить функцию входа в систему и проверки времени.
public class LoginDialog extends Dialog {
//basic code
/**
* Create contents of the dialog.
*/
private void createContents() {
//UI code
RealtimeThread realtimeThread=new RealtimeThread(lbl_time, btn_login);
Thread thread=new Thread(realtimeThread);
thread.start();
}
//relevance methods
}
class RealtimeThread implements Runnable{
private Label lbl_time;
private Button btn_login;
public RealtimeThread(Label lbl_time, Button btn_login) {
// TODO Auto-generated constructor stub
this.lbl_time=lbl_time;
this.btn_login=btn_login;
}
@Override
public void run() {
// TODO Auto-generated method stub
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
int year, month, day, hour, min, sec;
year=Integer.parseInt(String.valueOf(new SimpleDateFormat("yyyy").format(new Date())));
month=Integer.parseInt(String.valueOf(new SimpleDateFormat("MM").format(new Date())));
day=Integer.parseInt(String.valueOf(new SimpleDateFormat("dd").format(new Date())));
hour=Integer.parseInt(String.valueOf(new SimpleDateFormat("HH").format(new Date())));
min=Integer.parseInt(String.valueOf(new SimpleDateFormat("mm").format(new Date())));
sec=Integer.parseInt(String.valueOf(new SimpleDateFormat("ss").format(new Date())));
lbl_time.setText(year +"year " + month +"month " + day + "day " + hour + ": " + min + ": " + sec );
break;
}
}
});
}
}
Хочу узнать время в реальном времени. И функция входа в систему для работы одновременно. Но время бежит, когда код выполняется, а возможности диалога застывают. В run () функция while (true) вызвала зависание. Как это решено?
Вы, вероятно, захотите использовать Display.timerExec для многократного выполнения небольшого фрагмента кода, но ваш текущий код не очень ясен.




Используйте API заданий vogella.com/tutorials/EclipseJobs/article.html