Я успешно сделал это, когда пользователь нажимает кнопку, запускается оператор командной строки, и они могут видеть его вывод.Командная строка в Java-выводах
Однако они могут видеть результат только после завершения команды.
Я собирался, чтобы пользователь увидел выходные данные в реальном времени, как если бы они использовали командную строку в окнах.
Могу ли я получить руководство относительно того, как это сделать?
Код:
Runtime runtime = Runtime.getRuntime();
try
{
process = runtime.exec("ping riot.de");
}
catch (IOException e1)
{
System.err.print("Error: " + e1);
e1.printStackTrace();
}
try
{
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = br.readLine()) != null)
{
sb.append(line);
sb.append("\n");
}
run.setText(sb.toString());
}
catch (IOException e)
{
System.err.println("Error: " + e);
}
EDIT - Изготовлена новая нить и пытаемся использовать SwingUtilities.invokeLater Это позволяет видеть компоненты кадров при его работе, однако он по-прежнему оленьей коже записи в TEXTAREA построчно.
Runtime runtime = Runtime.getRuntime();
try
{
process = runtime.exec("ping riot.de");
}
catch (IOException e1)
{
System.err.print("Error: " + e1);
e1.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
try
{
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = br.readLine()) != null)
{
sb.append(line);
sb.append("\n");
run.setText(sb.toString());
}
}
catch (IOException e)
{
System.err.println("Error: " + e);
}
}
});
Каков тип переменной 'run', в' run.setText (sb.toString()); '? – jrahhali
Как насчет ввода 'run.setText (sb.toString());' внутри цикла while? – Plirkee
@jrahhali Это JTextArea – Plumel