Я работаю в инструменте, который требует от пользователя взаимодействия с консолью, и для каждой введенной команды есть графическое представление с результатом команды. Я хотел бы иметь одно приложение JavaFX с TextArea, выступающим в качестве консоли для приложения spring-shell, и холстом, выступающим в качестве вывода визуализации.
Как я могу заменить стандартный ввод/вывод, используемый spring-shell, на TextArea?
Спасибо
ProcessBuilder
, получитеProcess
, а затем вы можете писать на его стандартный ввод и читать из его стандартного вывода и стандартной ошибки (убедитесь, что вы прочитали оба, иначе буферы заполнятся и процесс зависнет). Вы захотите сделать это в отдельных потоках, что означает, что вам придется взаимодействовать с потоком приложения JavaFX, чтобы обновить файлTextArea
. - person Slaw   schedule 22.04.2020TextArea
, нажать Enter и выполнить одну из команд, которые я зарегистрировал как доступные команды spring-shell. Метод, который определяет, что делает команда, может потребовать обновления стороны холста приложения JavaFX. Я боюсь, что если я использую другой процесс, у меня не будет прямой связи с компонентами JavaFX, пока команда не завершит свое выполнение. - person Orlando Garcia   schedule 22.04.2020System.setOut(...)
. Если вы можете сказать Spring-Shell использовать пользовательский поток ввода/вывода, процесс будет таким же, просто он происходит на уровне Spring, а не на системном уровне. Имейте в виду, что первый подход будет перенаправлять весь системный вывод в вашу текстовую область. - person Slaw   schedule 22.04.2020