1

これは、インストール画面のコンソール出力に対するフォローアップの質問ですか?

インストール中に何が起こったかを表示するテキスト領域コンポーネント (「log.display」) を含む画面を構成しました。インストールは、この画面に添付されているスクリプトで実行されます。インストール手順が完了したら、次のようなことを行います (displayLog は前に初期化されます)。

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

残念ながら、テキスト領域コンポーネントはこれによって更新されません。スクリプトからテキスト領域を動的に更新するには、どうすればよいですか (しなければなりません) ?

編集:

私が見つけた:

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

これは機能しているように見えますが、問題が 1 つあります。このソリューションで表示される「ログ」に、テキスト領域が表示できるよりも多くの行が含まれている場合、垂直スクロールバーは表示されますが、最後の行まで自動的にスクロールされません。テキスト領域にそれをさせる方法はありますか?

もう 1 つの質問: screenID を指定せずに現在の画面のコンテキストを尋ねることは可能ですか (何が変わる可能性がありますか)?

ありがとう!フランク

4

1 に答える 1

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

これは私のセットアップでは正常に機能します。

于 2012-10-30T11:52:32.250 に答える