Disable/Grey-out 长时间验证期间的屏幕或组件
Disable/Grey-out screen or components during long validation
我有一个屏幕需要可能很长的验证逻辑-运行(例如,在慢速机器上,可能长达十秒)。在验证期间,install4j 禁用输入,这很好。但是,屏幕没有给出被禁用的appearance/L&F。例如,标签和输入字段不会变灰。我希望屏幕或控件在验证期间看起来已禁用。
我查看了一些 install4j API 文档,希望找到类似 screen.setEnabled( boolean ) 的内容,但找不到任何相关内容。
我也曾尝试在验证脚本中使用以下代码来执行此任务,但它似乎不起作用。也就是说,在长时间 运行 验证期间,所有屏幕控件仍然启用 L&F:
for( FormComponent fc : formEnvironment.getFormComponents() )
{
fc.setEnabled( false );
}
有什么建议吗?
验证表达式在事件派发线程上执行,因此您无法访问任何字段的事实仅仅是因为 EDT 不可用。
对于长时间 运行 验证,将 "Run script" 操作添加到屏幕,并将 "Failure strategy" 属性 设置为 "Return to the parent screen"。表单组件将通过适当的视觉反馈自动禁用。如果验证失败,return 脚本中的 null 将再次显示屏幕。
您还可以在验证过程中显示进度:在表单屏幕上,添加一个 "Progress display" 表单组件并选中 "Hide initially" 属性。然后,在执行验证的 "Run script" 操作之前添加一个 "Set the progress bar" 操作。您还可以通过编程方式控制进度,如下所示:
context.getProgressInterface().setIndeterminateProgress(true);
我有一个屏幕需要可能很长的验证逻辑-运行(例如,在慢速机器上,可能长达十秒)。在验证期间,install4j 禁用输入,这很好。但是,屏幕没有给出被禁用的appearance/L&F。例如,标签和输入字段不会变灰。我希望屏幕或控件在验证期间看起来已禁用。
我查看了一些 install4j API 文档,希望找到类似 screen.setEnabled( boolean ) 的内容,但找不到任何相关内容。
我也曾尝试在验证脚本中使用以下代码来执行此任务,但它似乎不起作用。也就是说,在长时间 运行 验证期间,所有屏幕控件仍然启用 L&F:
for( FormComponent fc : formEnvironment.getFormComponents() )
{
fc.setEnabled( false );
}
有什么建议吗?
验证表达式在事件派发线程上执行,因此您无法访问任何字段的事实仅仅是因为 EDT 不可用。
对于长时间 运行 验证,将 "Run script" 操作添加到屏幕,并将 "Failure strategy" 属性 设置为 "Return to the parent screen"。表单组件将通过适当的视觉反馈自动禁用。如果验证失败,return 脚本中的 null 将再次显示屏幕。
您还可以在验证过程中显示进度:在表单屏幕上,添加一个 "Progress display" 表单组件并选中 "Hide initially" 属性。然后,在执行验证的 "Run script" 操作之前添加一个 "Set the progress bar" 操作。您还可以通过编程方式控制进度,如下所示:
context.getProgressInterface().setIndeterminateProgress(true);