这是Console output on Installation screen?
的后续问题我已经配置了一个包含文本区域组件(“log.display”)的屏幕,该组件应该显示我安装期间发生的事情。安装在附加到此屏幕的脚本中运行。完成安装步骤后,我做了类似的事情(之前初始化了displayLog):
displayLog = displayLog + currentStep + " done. \n";
context.setVariable("log.display",displayLog);
不幸的是,文本区域组件未被更新。我可以(必须)从我的脚本动态更新文本区域吗?
修改
我找到了:
formPanelContainer = (FormPanelContainer)context.getScreenById(<screenID>);
formPanelContainer.getFormEnvironment().reinitializeFormComponents();
这似乎有效,但有一个问题:如果此解决方案显示的“日志”包含的行数多于文本区域可显示的行数,则会显示垂直滚动条但不会自动滚动到最后一行。有没有办法让文本区域这样做?
另一个问题:是否可以在不指定screenID(可以更改的内容)的情况下询问当前屏幕的上下文?
谢谢! 弗兰克
答案 0 :(得分:1)
我的问题的解决方案似乎是:获取TextArea组件的ConfigurationObject:
FormPanelContainer formPanelContainer = (FormPanelContainer)context.getScreenById(<ScreenID>);
FormEnvironment formEnvironment = formPanelContainer.getFormEnvironment();
FormComponent logComponent = formEnvironment.getFormComponentById(<TextAreaComponentID>);
JTextArea logComponentObject = (JTextArea)logComponent.getConfigurationObject();
并且每次都必须记录某些内容:
logComponentObject.append("Text to log" + "\n");
logComponentObject.setCaretPosition(logComponentObject.getDocument().getLength());
这在我的设置中运行良好。