1

这是安装屏幕上控制台输出的后续问题吗?

我已经配置了一个包含文本区域组件(“log.display”)的屏幕,它应该显示我安装过程中发生的事情。安装在附加到此屏幕的脚本中运行。完成安装步骤后,我执行以下操作(之前已初始化 displayLog):

    displayLog = displayLog + currentStep + " done. \n";
    context.setVariable("log.display",displayLog);

不幸的是,文本区域组件不会因此而更新。我可以(必须)做什么来从我的脚本动态更新文本区域?

编辑:

我发现:

    formPanelContainer = (FormPanelContainer)context.getScreenById(<screenID>); 
    formPanelContainer.getFormEnvironment().reinitializeFormComponents(); 

这似乎可行,但有一个问题:如果使用此解决方案显示的“日志”包含的行数超过了文本区域可以显示的行数,它会显示垂直滚动条,但不会自动滚动到最后一行。有没有办法让文本区域做到这一点?

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

谢谢!坦率

4

1 回答 1

1

The solution for my problem seems to be: get the ConfigurationObject of the TextArea component:

FormPanelContainer formPanelContainer = (FormPanelContainer)context.getScreenById(<ScreenID>);
FormEnvironment formEnvironment = formPanelContainer.getFormEnvironment();
FormComponent logComponent = formEnvironment.getFormComponentById(<TextAreaComponentID>);
JTextArea logComponentObject = (JTextArea)logComponent.getConfigurationObject();

and each time, something has to be logged:

logComponentObject.append("Text to log" + "\n");
logComponentObject.setCaretPosition(logComponentObject.getDocument().getLength());

This works fine in my setup.

于 2012-10-30T11:52:32.250 回答