JavaFX с автопрокруткой, автообновлением текста

На вопрос новичка о JavaFX, на который я не смог ответить, несмотря на то, что знал, что это должно быть довольно просто сделать, и не нашел на нем никаких ресурсов, где бы я ни смотрел (учебные пособия, многие онлайн-документы Oracle, статьи, хорошо известные блоггеры JavaFX и т. д.)

Я разрабатываю приложение, запускающее командную строку (сценарий), и я успешно получил вывод (через ProcessBuilder) из сценария, который я могу отображать на постоянной основе, как это происходит в командной строке. То есть я могу сделатьSystem.out.println(line); весь день, показывая выходные данные в консоли, которая просто возвращает выходные данные из входного потока, возвращенного «myProcess» который запущен, создан так:

BufferedReader bri = new BufferedReader(new InputStreamReader(myProcess.getInputStream()))

Таким образом, я могу видеть все результаты, возвращаемые из сценария.

Я хотел бы настроить JavaFX TextArea или ScrollPane или, не уверен, что, чтобы отображать этот выходной текст (его много, например, несколько тысяч строк) в качестве продолжающегося "прогресса". о том, что происходит в сценарии, как это происходит. У меня есть сцена, у меня есть кнопки, и я получаю данные из этой сцены, чтобы запустить скрипт, но теперь я хотел бы показать результат нажатия на кнопку «ЗАПУСТИТЬ ЭТОТ СКРИПТ», так сказать.

Я предполагаю, что мне нужно создатьTextArea, как описано здесь или возможноTextBuilder было бы полезно начать делать это. Точно сказать не могу.

Мне нужна помощь в настройке привязки или автоматической прокрутки / автообновления.

Может ли кто-нибудь предоставить мне место для начала, чтобы сделать это с JavaFX? Я бы не хотел использовать Swing.

(Я использую JavaFX 2.2, JDK 1.7u7, все последние материалы, и да, это приложение FXML - поэтому делать это таким образом было бы предпочтительным.)

ОБНОВЛЕНИЕ: ответ Сергея Гринева был очень полезен в обязательной части. Но вот еще несколько подробностей о том, что я имею в виду, когда спрашиваю «немного помощи в настройке». - в основном мне нужно вернуть управление основной сцене, чтобы позволить пользователю отменить сценарий или иным образом отслеживать происходящее. Так что я бы хотел "порождать" процесс, который запускает этот сценарий (то есть имеет какой-то «свободный процесс»), но по-прежнему получает выходные данные из него. (Я не совсем ясно сказал об этом в своем первоначальном вопросе.)

Методика, которую я здесь использую (см. Ниже), заключается в том, чтобы подождать в процессе, но, конечно, это означает, что диалоговое окно / сцена «подвешено». пока скрипт выполняется. Я бы хотел вернуть себе контроль, но как мне пройти через "p"? (Процесс) в какой-то другой элемент контроллера (или, в качестве альтернативы, просто запустите другой процесс, передающий параметры, чтобы запустить сценарий и запустить его), который затем выполнит автообновление через привязку, о которой Сергей Гринев упоминает: без "подвешивания" Сцена / окно? Кроме того: могу ли я тогда "остановиться"? этот другой процесс, если пользователь запрашивает это?

Вот мой текущий код («ждет», в то время как сценарий - выполнение которого занимает 20-40 минут! - завершается; этоnot что я хочу, я бы хотел, чтобы управление вернулось пользователю):

public class MyController implements Initializable {  
  @FXML
  private void handleRunScript(ActionEvent event) throws IOException {

    ProcessBuilder pb = new ProcessBuilder("myscript.sh", "arg1", "arg2", ...);

    Process p = pb.start();
    try {
      BufferedReader bri = new BufferedReader
        (new InputStreamReader(p.getInputStream()));
      String line;

      while ((line = bri.readLine()) != null) {
        System.out.println(line);
        textAreaRight.setText(line);
      }
      bri.close();
      p.waitFor();
    }
    catch (Exception err) {
      err.printStackTrace();
    }    
  }

  @FXML
  private void handleCancel(ActionEvent event) {
    doSomethingDifferent();
  }
}

Ответы на вопрос(1)

Ваш ответ на вопрос