【问题标题】:Show form on specific time在特定时间显示表格
【发布时间】:2019-10-06 19:05:18
【问题描述】:

我可以在特定日期/时间在侦察员中显示表格吗?

例如:我在应用中有提醒。我想在特定时间向用户显示提醒表单。

我知道我可以在表单中使用计时器,但是我需要将该“计时器代码”添加到我在应用程序中的所有表单中,以便可以触发计时器。

是否有另一种方法可以将其添加到一个位置,而不是添加到所有表单中?

谢谢

【问题讨论】:

    标签: eclipse-scout


    【解决方案1】:

    是的,请查看 Eclipse Scout 的技术指南。在chapter 9, JobManager 中,您应该找到有关作业的所有信息以及如何安排作业的代码示例。

    对于您的情况,您必须安排一个 ModelJob 并使用一个使用 #withStartAt(Date) 方法的 ExecutionTrigger 创建一个 JobInput。这应该有效:

    Date reminderDate = new Date();
    ModelJobs.schedule(() -> {
        new ReminderForm().start();
    }, ModelJobs.newInput(ClientRunContexts.copyCurrent())
            .withName("Open reminder form")
            .withExecutionTrigger(Jobs.newExecutionTrigger()
                    .withStartAt(reminderDate))
            .withExceptionHandling(new ExceptionHandler() {
                @Override
                public void handle(Throwable t) {
                    System.err.println(t);
                }
            }, true));
    

    也许您还应该查看“桌面通知”概念,它允许使用比表单更少侵入性的小部件来通知用户。你会发现一个例子here,点击“显示通知”按钮。

    【讨论】:

    • 谢谢。我会试试这个
    • 嗨,我添加了这个,但是代码没有执行...没有在调试断点处停止。
    • 我假设您已经在上面的示例中调整了虚拟代码,并且您不是简单地创建一个 new Date() 而是为确切的日期/时间(将来)创建一个 Date 实例,当计划的作业应该运行吗?
    • 是的,我在未来创建 2 分钟的日期,但整个代码不会在断点处停止。我需要在平台监听器中注册作业吗?
    • 从哪里调用 schedule() 方法?是否调用了 schedule() 方法?不,您不需要平台侦听器来安排作业。例如,您可以将代码放在 Desktop 类的 execInit() 方法中。但任何其他地方都可以,只要您从事童子军模特工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    相关资源
    最近更新 更多