我想在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标签上制作秒,分钟,小时。
答案 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的线程安全方式更新用户界面,并返回睡眠状态。
对于休眠线程,您可以使用Timer或ScheduledExecutorService。每个都有其优点。
要更新用户界面...我不知道swt,但是您需要找到Swing中使用的等效SwingWorker。
答案 2 :(得分:0)
SWT具有默认的本机计时器支持。使用以下方法
org.eclipse.swt.widgets.Display.timerExec(int, Runnable)
请阅读文档以获取更多信息。