Отобразите вывод CMD в моем GUI (Java)

Различие заключается в том, что вы говорите: если вы просто хотите запускать приложения, вы можете установить только среду выполнения.

Если вы хотите создавать приложения, вы можете установить SDK, который также включает среду выполнения.

На сайте это действительно выглядит так, как будто оба ссылаются на один и тот же пакет: https://dotnet.microsoft.com/download/linux-package-manager/rhel/sdk-current https://dotnet.microsoft.com/download/linux-package-manager/rhel/runtime-current

Либо они перепутали инструкции, либо они просто предлагают одну.

Глядя на Dockerfile для контейнера среды выполнения RHEL dotnet, вы можете увидеть шаги, необходимые только для установки среды выполнения:

https://github.com/redhat-developer/s2i- dotnetcore / blob / f344b26d956638600302b115fcc6693682f592b2 / 2.2 / runtime / Dockerfile.rhel7 # L51

Пакет для среды выполнения только выглядит как rh-dotnet22-dotnet-runtime-2.2, но я не знаком с RHEL, поэтому не могу скажу тебе, все ли это тебе нужно.

РЕДАКТИРОВАТЬ: Обновлена ​​ссылка с вкладом от Омаир Маджид

5
задан Michael Myers 20 March 2009 в 18:49
поделиться

3 ответа

Вы перекрашивали () после установки текста маркировки?

Так или иначе не необходимо обычно решаться выполнять долгую операцию на потоке события GUI. Изучите использование a SwingWorker вместо этого.

5
ответ дан 13 December 2019 в 22:16
поделиться

Необходимо будет запустить отдельный поток для выполнения процесса. Код, который Вы используете для выполнения его, может главным образом просто быть введен в поток (или Runnable) run() метод, как, но установить текст в JLabel, необходимо использовать что-то вроде этого:

...
while ((line = input.readLine()) != null) {
    SwingUtilities.invokeLater(new SetTextRunnable(jLabel1, line));
}
...

class SetTextRunnable implements Runnable {
    private String line;
    private JLabel jLabel1
    public SetTextRunnable(JLabel jLabel1, String line) {
        this.jLabel1 = jLabel1;
        this.line = line;
    }
    public void run() {
        jLabel1.setText(line);
    }
}

Править: просто замеченный что-то: по-видимому, класс SwingWorker был разработан для этого вида вещи, таким образом, это - другая опция для Вас (если это существует в Вашей версии Java).

РЕДАКТИРОВАНИЕ к РЕДАКТИРОВАНИЮ: настолько глупый меня, я не заметил SwingWorker был уже упомянут в другом ответе.

3
ответ дан 13 December 2019 в 22:16
поделиться

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

2
ответ дан 13 December 2019 в 22:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: