Здравствуйте я столкнулся несколько проблемы в сочетании JTextArea с JProgressBar. JtextArea показывает консоль сценария пакетного запуска. вот мой код: -Присоединение JProgressBar и JTextArea (партия запуска консоли) в Затмении
private void initialize() {
frmPdfPublisher = new JFrame();
frmPdfPublisher.setIconImage(new ImageIcon("C:\\Users\\Admin\\Desktop\\imageedit_1_6449501097.png").getImage());
frmPdfPublisher.setTitle("PDF Publisher");
frmPdfPublisher.setBounds(100, 100, 483, 540);
frmPdfPublisher.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmPdfPublisher.getContentPane().setLayout(null);
TextArea textArea = new TextArea();
textArea.setBounds(10, 280, 447, 146);
frmPdfPublisher.getContentPane().add(textArea);
textArea.setEditable(false);
ScrollPane scrollPane = new ScrollPane();
scrollPane.setBounds(10, 280, 447, 146);
frmPdfPublisher.getContentPane().add(scrollPane);
JProgressBar progressBar = new JProgressBar();
progressBar.setBounds(10, 254, 447, 14);
frmPdfPublisher.getContentPane().add(progressBar);
progressBar.setVisible(true);
JButton btnTransform = new JButton("Transform");
btnTransform.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String cmds[] = {"C:\\Users/Admin/Desktop/test1.bat"};
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(cmds);
process.getOutputStream().close();
java.io.InputStream inputStream = process.getInputStream() ;
InputStreamReader inputstreamreader = new InputStreamReader(inputStream);
BufferedReader bufferedrReader = new BufferedReader(inputstreamreader);
String strLine = "";
while ((strLine = bufferedrReader.readLine()) != null) {
System.out.println(strLine);
String newline = "\n";
textArea.append(strLine+newline);
textArea.setCaretPosition(textArea.SCROLLBARS_VERTICAL_ONLY);
progressBar.setString(strLine);
}
} catch (IOException IoException) {
IoException.printStackTrace();
}
}
});
Я хочу показать запущенный скрипт в JprogressBar. Я использую Eclipse, Neon.2
EDIT: -
Я добавил несколько шагов, но он не показывает совершенную загрузку и получение завершается, как только консоль будет остановлена.
Вот отредактированный код: -
JButton btnTransform = new JButton("Transform");
btnTransform.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String cmds[] = {"C:\\Users/Admin/Desktop/test1.bat"};
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(cmds);
process.getOutputStream().close();
java.io.InputStream inputStream = process.getInputStream() ;
InputStreamReader inputstreamreader = new InputStreamReader(inputStream);
BufferedReader bufferedrReader = new BufferedReader(inputstreamreader);
String strLine = "";
int n=progressBar.getValue();
if(n<100){
n++;
progressBar.setValue(100);
}
else{
timer.cancel();
}
while ((strLine = bufferedrReader.readLine()) != null) {
System.out.println(strLine);
String newline = "\n";
textArea.append(strLine+newline);
textArea.setCaretPosition(textArea.SCROLLBARS_VERTICAL_ONLY);
progressBar.setStringPainted(true);
progressBar.dispatchEvent(e);
progressBar.getValue();
progressBar.updateUI();
}
} catch (IOException IoException) {
IoException.printStackTrace();
}
}
Пожалуйста, исправить меня, что мне не хватает?
не забывайте принимать ответ, когда у вас есть то, что вы искали. – AxelH