Используя кнопку поворота, я пытаюсь загрузить html-файл и записать его в новый html-файл, выполняя индикатор выполнения. Когда я нажимаю кнопку, моя программа, похоже, замерзает, пока загрузка не завершится, а затем индикатор выполнения на 100%. Я не совсем уверен, как исправить эту проблему, поскольку я новичок в java.JProgressBar не обновляется во время загрузки
private void jButton2MouseReleased(java.awt.event.MouseEvent evt) {
try {
URL oracle = new URL("http://mywebsite.com");
URLConnection yc = oracle.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String inputLine;
String input_path = "d:/website/updatedsite.html";
WriteFile data = new WriteFile(input_path, false);
int length = yc.getContentLength();
int current = 0;
jProgressBar1.setMaximum(length);
jProgressBar1.setValue(0);
while ((inputLine = in.readLine()) != null) {
data.writeToFile(inputLine);
int i = 0;
for (i = 0; i < length; i++) {
jProgressBar1.setValue(i);
}
}
in.close();
}
catch (java.io.IOException e) {
JOptionPane.showMessageDialog(Frame1.this, "Error " + e.getMessage());
}
}
возможно дубликат [JProgressBar не будет обновлять] (http://stackoverflow.com/questions/13094666/jprogressbar-wont-update) –
Не блокирующие EDT (Event Dispatch Thread) - графический интерфейс «замораживается», когда это произойдет. Вместо вызова 'Thread.sleep (n)' реализовать Swing 'Timer' для повторения задач или' SwingWorker' для длительных задач. Подробнее см. [Параллелизм в Swing] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/). –