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 - поэтому делать это таким образом было бы предпочтительным.)

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

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

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

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)

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