Я просматриваю SO и Google некоторое время для ответа на этот вопрос, но я не могу найти тот, который действительно работает. Я начну с начала:Показывать неопределенный JProgressBar при запуске командного файла
Я создал класс Java с методом, который запускает командный файл в фоновом режиме (окно команд не появляется). Программа отлично работает, за исключением того, что она будет немного запутывать конечного пользователя, так как пакетный файл занимает некоторое время, чтобы завершить - пользователь не будет знать, продолжает ли программа работать или нет. После завершения исполнения командного скрипта появляется диалоговое окно с сообщением о завершении работы, но за период времени между запуском метода и появлением диалогового окна выглядит так, как будто программа ничего не делает.
Итак, вот мой вопрос: мне очень хотелось бы отобразить новый фрейм с текстовой областью, которая отображает вывод командного файла. Однако я понимаю, что это очень трудно обойтись без создания временных файлов, записи на них, чтения из них и т. Д. Я бы предпочел избежать этого, если это возможно. Поэтому я решил, что лучше будет отображать неопределенный JProgressBar во время выполнения процесса и закрыть его, когда процесс будет завершен. К сожалению, я не думаю, что Swing может справиться с этим, поскольку для этого потребуется запустить сразу несколько процессов. Я слышал о SwingWorker, но не совсем уверен, как это будет использоваться в этом случае. У меня есть следующий SSCCE, который работает, но не имеет реализованного шага выполнения.
public myClass(){
public static void main(String[] args){
String[] commands = {"cmd.exe", "/C", "C:\\users\\....\\myBat.bat"};
Process p = Runtime.getRuntime().exec(commands);
p.waitFor()
JOptionPane.showMessageDialog(null, "Process finished!");
}
}
Пока p.waitFor() ждет процесса, на экране ничего нет. Я просто хочу, чтобы пользователь показывал, что процесс все еще запущен. Мысли? Благодаря!
Это фантастика! Мне придется немного поработать с ним, чтобы он соответствовал моим потребностям. Это должен быть отдельный класс и передать мои команды процесса в него. В настоящее время у меня есть переменная класса и метод мутатора для установки значения. По какой-то причине, хотя он не запускает командный файл. Я сделаю немного больше отладки и вернусь к вам. – DerStrom8
Он работает как ожидалось, большое спасибо! К сожалению, он работает очень медленно. Я не думаю, что это может быть ускорено? – DerStrom8
Я бы предположил, что это пакетный файл; Я должен был замедлить его, чтобы проверить; [profile] (http://stackoverflow.com/q/2064427/230513). – trashgod