通过脚本动态设置TextArea文本

时间:2012-10-29 13:03:55

标签: install4j

这是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(可以更改的内容)的情况下询问当前屏幕的上下文?

谢谢! 弗兰克

1 个答案:

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

这在我的设置中运行良好。