我的屏幕需要可能长时间运行的验证逻辑(例如,在慢机器上,可能长达10秒)。在验证期间,install4j禁用输入,这很好。但是,屏幕不会使外观/ L& F被禁用。例如,标签和输入字段不是灰色的。我希望屏幕或控件在验证期间看起来处于禁用状态。
我查看了一些install4j API文档,希望能找到像screen.setEnabled(boolean)这样的内容,但却找不到这些内容。
我还尝试在验证脚本中使用以下代码来执行此任务,但它似乎不起作用。也就是说,在长时间运行的验证过程中,所有屏幕控件仍然启用了L& F:
for( FormComponent fc : formEnvironment.getFormComponents() )
{
fc.setEnabled( false );
}
有任何建议吗?
答案 0 :(得分:1)
验证表达式在事件派发线程上执行,因此您无法访问任何字段这一事实仅仅是因为EDT不可用。
对于长时间运行的验证,在屏幕上添加“运行脚本”操作,并将“故障策略”属性设置为“返回到父屏幕”。表单组件将通过适当的视觉反馈自动禁用。如果验证失败,则从脚本返回null,屏幕将再次显示。
您还可以在验证期间显示进度:在表单屏幕上,添加“进度显示”表单组件,并选中“隐藏最初”属性。然后,在执行验证的“运行脚本”操作之前添加“设置进度条”操作。您还可以通过编程方式控制进度,如下所示:
context.getProgressInterface().setIndeterminateProgress(true);