如何在标签(SWT)上设置运行时间以及日期名称

时间:2014-03-26 07:30:46

标签: java swt

我想在Swt标签上显示日期及其名称以及运行时间。   这是我的代码: -

    Label DateLbl = new Label(shell, SWT.NONE);   
    DateLbl.setBounds(0,0,100,50);

    DateFormat dateFormat1 = new SimpleDateFormat("dd/MM/yyyy  HH:mm:ss");
    Calendar cal1 = Calendar.getInstance();


    DateFormatSymbols dfs1 = new DateFormatSymbols();
    String weekdays1[] = dfs1.getWeekdays();

    int day1 = cal1.get(Calendar.DAY_OF_WEEK);

    String nameOfDay1 = weekdays1[day1];


    DateLbl.setText(" "+dateFormat1.format(cal1.getTime()) +             " \n" +"        "+nameOfDay1);

它显示时间,日期和日期名称,但我想要运行秒,分钟和小时(标签上的完整虚拟时钟)。

这是上面代码的o / p - 26/03/2014 12:57:01              星期三

每次启动应用程序时,时间都会更新。

有人可以建议在SWT标签上制作秒,分钟,小时。

3 个答案:

答案 0 :(得分:1)

您可以使用java.util.Timer类定期运行代码:

Timer timer = new Timer("clock timer", true);

timer.schedule(new UpdateTimerTask(), 1000l, 1000l);  // Run once a second


private class UpdateTimerTask extends TimerTask
{
  @Override
  public void run()
  {
    // Timer task runs in a background thread, 
    // so use Display.asyncExec to run SWT code in UI thread

    Display.getDefault().asyncExec(new Runnable() 
     {
       @Override
       public void run()
       {
         // TODO update the label
       }
     });  
  }
}

答案 1 :(得分:0)

你的问题不明确?你想用一秒钟的当前时间更新时钟吗?

如果是这样,你需要产生一个线程来休眠并每秒唤醒。然后,线程以任何适合swt的线程安全方式更新用户界面,并返回睡眠状态。

对于休眠线程,您可以使用TimerScheduledExecutorService。每个都有其优点。

要更新用户界面...我不知道swt,但是您需要找到Swing中使用的等效SwingWorker

答案 2 :(得分:0)

SWT具有默认的本机计时器支持。使用以下方法

org.eclipse.swt.widgets.Display.timerExec(int, Runnable)

请阅读文档以获取更多信息。