Я пытаюсь прочитать входной поток процесса, который я создаю внутри функции actionPerformed
для JButton
для моего интерфейса. Для этой цели я реализовал класс runnable. Проблема в том, что я получаю выходной поток в квантах, что означает, что, скажем, я получаю 50 строк, чем большая пауза, и 50 строк больше и тому подобное. Большая проблема заключается в том, что порядок строк не согласован. Вот как выглядит мой код ...Java, чтение входного потока внутри jButton actionperformed
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
try{
String sCommand = "cmd /c \"myenvsetup.bat && myprogram.exe\"";
Runtime rt = Runtime.getRuntime();
pr = rt.exec(sCommand);
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
try{
BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line = null;
while((line = input.readLine()) != null){
jTextArea1.append(line + "\n");
jTextArea1.scrollRectToVisible(new Rectangle(0, jTextArea1.getHeight(), 0, 0));
jTextArea1.update(jTextArea1.getGraphics());
}
pr.waitFor();
} catch (Exception e) {
}
}
});
} catch (Exception e){
}
}
Для примера [http://stackoverflow.com/questions/30797851/update-jlabel-content-from-the-output-of-shell-script/30798684#30798684), [пример] (http://stackoverflow.com/questions/34858405/how-can-i-make-this-method-update-the-gui-within-my-loop/34864911#34864911), [пример] (http://stackoverflow.com/ вопросы/15801069/печать-а-Java-InputStream-из-а-процесса/15801490 # 15801490). Вероятная причина - это вызов 'update', который вам никогда не приходилось делать – MadProgrammer