Встроить фрейм терминала в окно JFrame Java

Я пытался заставить приложение действовать как клиент ssh / scp, чтобы упростить передачу файлов с моего ноутбука на рабочий стол, и в настоящее время мне удалось получить вывод команды ls и получить дерево файлов для хоста и удаленный пользователь, однако для этого требуется ввод данных в терминале, с которым я запускаю приложение.

Возможно ли встроить окно терминала в графический интерфейс, поскольку я занимался созданием интерпретатора, однако такие вещи, как завершение табуляции и запуск, например, python3, не работают. Я также надеюсь в полной мере использовать терминал и иметь возможность запускать такие команды, как vim, а не просто печатать вывод команд, что у меня сейчас есть.

Мой код для выполнения команд:

public void processCmd(String command) {
        if (command.equals("exit")) {
            System.exit(0);
        } else if (command != null && !command.isEmpty()) {
            execCommand(command);
        }
}

public void execCommand(String input) {
        String result = null;
        try {
            Runtime r = Runtime.getRuntime();                    

            Process p = r.exec(input);

            BufferedReader in =
                new BufferedReader(new InputStreamReader(p.getInputStream()));
            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                System.out.println(inputLine);
                result += inputLine;
            }
            in.close();

        } catch (IOException e) {
            System.out.println("Error");
        }
}

Основная проблема заключается в том, что когда запускается что-либо вроде python или vim, приложение зависает и ничего не делает, python даже не отображается в терминале, однако, если я запускаю vim, он меняет экран терминала (не в app) в основном для vim, но без нижней панели.

"Можно ли..." да. Ответ на такой вопрос почти всегда «да». С другой стороны, количество усилий, которые вы должны приложить, варьируется.

Code-Apprentice 25.02.2019 23:27

Знаете ли вы какие-либо примеры того, как это делается, поскольку я не могу найти ни одного?

T. Roche 25.02.2019 23:30

Вы не указали, почему python3 не работает, и не опубликовали какой-либо код, что затрудняет ответ. Всегда при разветвлении и управлении другими процессами в Java полезно ознакомиться с классом Процессбилдер, который может помочь вам настроить stdin/stderr для управления из Java.

ansjob 25.02.2019 23:36

Python заставит приложение зависнуть и ничего не отобразит в графическом интерфейсе или терминале, однако запустит процесс python, который можно просмотреть в мониторе активности.

T. Roche 25.02.2019 23:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
187
0

Другие вопросы по теме