2015-04-22 73 views
1

我正在使用vaadin框架来建立我的项目,我想显示一个通知,当有一个特定的日期,我有一个函数,返回这个日期,我是想知道当系统日期达到此计算日期时如何显示消息。当特定日期到达java或vaadin时显示通知

//I'd like to display a notification when the system's date reaches this "date_main_levee" 
public Date getMainLevee(Date date_ouverture_plis, int duree_caution){ 
    Date date_main_levee; 
    Calendar c = Calendar.getInstance(); 
    c.setTime(date_ouverture_plis); 
    c.add(Calendar.DATE, duree_caution); 
    date_main_levee=c.getTime(); 

    return date_main_levee; 
} 

基本上就是我要找的就是这样一个简单的Android中的解决方案:http://blog.blundell-apps.com/notification-for-a-user-chosen-time/

是否有任何vaadin命题此(一个Java解决方案还有助于为Vaadin是一个Java框架)。

编辑

我的问题是不是通知本身,而是运行和服务测试,如果实际日期是相当于一个日期参数,我给

编辑2:

我使用此代码,它显示在控制台中的结果,但没有通知在用户界面中:

这是视图,我hav EA简单的按钮,当我点击它的任务应该开始:

final Button annulerLC=new Button("Annuler"); 
annulerLC.addClickListener(new ClickListener() { 

     @Override 
     public void buttonClick(ClickEvent event) { 
      // TODO Auto-generated method stub 
      DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
      Date date = null; 
      try { 
       date = dateFormatter.parse("2015-04-23 18:29:00"); 
      } catch (ParseException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      Timer timer = new Timer(); 

      timer.schedule(new CautionTask(), date); 
     } 
    }); 

中,TimerTask在这个单独的类定义(这只是显示一个通知):

public class CautionTask extends TimerTask{ 

public void run() 
{ 
    Notification.show("success");//Doesn't show anything 
    System.out.println("success+++");//Works fine 
} 

}

我在控制台上得到:成功+++,所以system.out.println显示确切的结果,但是View不显示通知“success”。

谢谢。

+0

对我来说,目前还不清楚你搜索什么。在vaadin7'Notification.show(“这是标题”, “这是描述”, Notification.Type.WARNING_MESSAGE);'是你所需要的 –

+0

不,这不是我正在寻找的,这显示一个简单的通知,我的问题不是通知本身,而是运行和测试的服务,如果实际日期等于我给出的日期参数,并且当它相等时,我可以简单地使用通知。显示 – Amine

回答

1

当您需要“实时”通知时,请在应用程序init()方法中启动后台线程,然后根据需要显示通知。 当然,你必须使用some push system,所以通知被推送给客户端。另请阅读有关从另一个线程访问UI的部分。

当您不需要实时通知时,只需将检查代码添加到一些UI表单中,然后在其中显示即可。在这种情况下不需要后台服务。

您需要:

一)Server push所以在后台服务器线程的更改推送到客户端。

B)Correct access to the UI从后台线程/任务,因为这有可能运行在另一个方面

+0

嗯,我尝试了一个简单的代码,但没有显示在用户界面(请参阅udit2),@Andre你认为我需要添加一个推插件? – Amine

+0

从单独的线程更新时需要推送,否则不需要推送。显示简单的代码部分 –

+0

虽然任务正在运行,但我已经复制了我的代码,UI中没有显示任何通知。 – Amine