2012-10-29 45 views
1

这是一个后续问题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(); 

这似乎工作,但有一个问题是:如果在“日志”这个解决方案显示包含比文字更行区域可以显示,它将显示垂直滚动条,但不会自动滚动到最后一行。有没有办法让文本区域做到这一点?

另一个问题:是否可以在不指定屏幕ID的情况下询问当前屏幕的上下文(可以改变什么)?

谢谢! 弗兰克

回答

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()); 

这工作正常在我的设置。